在页面加载之前,我应该做些什么来异步初始化一些数据



我正在编写一个简单的待办事项列表应用程序,待办事项项存储在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((){});
}

相关内容

  • 没有找到相关文章

最新更新