我正在尝试使用flutter在sqlite内存数据库中插入很多行(大约12k或更多)。
我从API获取数据并使用计算函数来处理来自Json的数据。现在,我需要将这些数据添加到内存中的数据库中,以便使用批处理事务。
batchInsertEventSong(List<EventSong> rows) async {
Database db = await instance.database;
db.transaction((txn) async {
Batch batch = txn.batch();
for (var song in rows) {
Map<String, dynamic> row = {
DatabaseHelper.columnIdSong: song.id,
DatabaseHelper.columnTitle: song.title,
DatabaseHelper.columnInterpreter: song.interpreter
};
batch.insert(table, row);
}
batch.commit();
}
}
Run Code Online (Sandbox Code Playgroud)
但是此函数在插入过程中阻止了我的UI,我也尝试了计算,但无法传递类db或类批处理。我没有弄清楚如何在另一个线程中执行此过程,或者(因为我不能使用隔离)执行而不阻塞我的UI。
有什么建议吗?
我需要使用自定义画家在 ListTile 内呈现我的自定义对象,以便绘制一些自定义文本。
ListTile(
title: CustomPaint(
painter: RowPainter.name(
_titleFontSelected,
_titleFont,
text,
index,
MediaQuery.of(context),
currentRow,
),
),
);
Run Code Online (Sandbox Code Playgroud)
在我的内部,我RowPainter用选定的字体绘制文本。当行太大时,它会自动换行并绘制到给定的油漆尺寸之外。
void paint(Canvas canvas, Size size)
Run Code Online (Sandbox Code Playgroud)
我喜欢这种行为,但如何调整绘画区域的高度?因为这是一个问题,因为它与下一个 List 行重叠。我知道CustomPaint有一个Size可设置的属性,但我只知道我的绘制函数内的文本尺寸,TextPainter getBoxesForSelection但为时已晚。
如果文本换行,如何动态“调整”行画家的高度?
我有这个问题,我的nome是一个char [20],如果我插入一些字符,数组进入溢出并写入另一个数组(cognome).
我试图用puts()更改scanf(),但最后一个不能正常工作,因为它跳出输入并且什么都不读.
有人知道解决方案吗?
这是代码
void addStudent(){
struct student s;
printf("Inserire Nome: ");
scanf("%20s",s.nome);
printf("\nInserire Cognome: ");
scanf("%30s",s.cognome);
printf("\nInserire eta': ");
scanf("%d",&s.anni);
}
Run Code Online (Sandbox Code Playgroud)
结果
Inserire Nome: cjhsdjkhbsdkhfgsdjkhfgskjhgjkhsfs
Inserire Cognome:
Inserire eta':
Run Code Online (Sandbox Code Playgroud)