我正在使用sqlite deleteSqlite制作一个todo应用程序,在删除过程中按下按钮时它不会删除,但我想知道为什么它会在热重绘时删除?
Future<void> _deleteTodoItem(int id, String text, bool isDone) async {
await TodoModelDao().deleteTodo(id, text, isDone);
refleshList();
}
Future<List<TodoModel>> _showAllData() async {
var todoList = await TodoModelDao().getAllData();
return todoList;
}
refleshList() {
setState(() {
_showAllData();
});
}
Future<void> deleteTodo(int id, String text, bool isDone) async {
var db = await DatabaseHelper.dbAccess();
await db.delete(TABLENAME, where: "$ID = ?", whereArgs: [id]);
}
Future<List<TodoModel>> getAllData() async {
var db = await DatabaseHelper.dbAccess();
List<Map<String, dynamic>> maps = await db.rawQuery("SELECT * FROM $TABLENAME");
return List.generate(maps.length, (i) {
var row = maps[i];
return TodoModel(id: row[ID], text: row[TEXT]);
});
}
child: IconButton(
onPressed: () {
_deleteTodoItem(widget.todoModel.id, widget.todoModel.text,
widget.todoModel.isDone);
},
icon: const Icon(Icons.delete),
color: Coloors.whiteColor,
iconSize: 18,
),
1条答案
按热度按时间rfbsl7qr1#
它确实删除了,但是flutter不知道你想在删除后重新渲染ui。
当你热重启时,它会重新渲染它。有很多工作围绕这一点。
一个简单的解决方案是调用
setState
强制重新渲染。你可以尝试用下面的代码替换你的代码(
IconButton
)的某些部分。