我正在编写一个简单的待办事项列表应用程序,待办事项项存储在sqlite中现在是sqflite: ^2.0.0+3
。我想在加载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告诉我应该在初始函数中添加async。当我添加async函数时,初始函数无法工作。我该怎么做才能成功呢?如何在主页之前初始化异步数据?不能在初始状态下标记异步。你可以试试这个
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((){});
}