我正在撰寫一個簡單的待辦事項串列應用程式,該待辦事項
sqflite: ^2.0.0 3現在存盤在 sqlite 中。我想在加載flutter頁面之前加載sqlite todo資料,這是我的初始代碼在flutter中的樣子:
class _HomePageState extends State<HomePage> {
GlobalKey _inputViewKey = GlobalKey();
List<Todo> _todos = [];
@override
void initState() {
var _db = DBProvider.db;
_todos = await _db.getAllTodo();
super.initState();
}
}
這是從資料庫加載資料的功能:
Future<List<Todo>> getAllTodo() async {
final db = await database;
var result = await db.query('Todo');
return result.map((it) => Todo.fromJson(it)).toList();
}
IDE 告訴我應該在初始函式中添加異步。當我添加異步函式時,初始函式無法作業。我應該怎么做才能讓它作業?如何在主頁之前初始化異步資料?
uj5u.com熱心網友回復:
您不能在 inistate 上標記異步。你可以試試這個
class _HomePageState extends State<HomePage> {
GlobalKey _inputViewKey = GlobalKey();
List<Todo> _todos = [];
@override
void initState() {
var _db = DBProvider.db;
getAllTodo();
super.initState();
}
}
并且在方法中
getAllTodo() async {
final db = await database;
var result = await db.query('Todo');
_todos = result.map((it) => Todo.fromJson(it)).toList();
setState((){});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/497902.html
