【发布时间】:2018-09-03 08:48:03
【问题描述】:
我有一个名为“retrieveDB”的函数,它使用 shared_preferences.dart 插件来检索数据,我将使用这些数据来决定是否从 Firestore 检索什么集合/文档名称。我已经在类的顶部初始化了 usersDB 和 notifDoc = ""。
Future retrieveDB() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String db = prefs.getString('db');
if (db == "MISS") {
usersDB = "users_miss";
notifDoc = "notifTokenMISS";
} else if (db == "SDD") {
usersDB = "users";
notifDoc = "notifToken";
}
}
我首先在 initState() 中放置了“retrieveDB”(在 super.initState() 之后)。
我的问题(我认为)是 shared_preferences 使用 Future 并暂停其执行并继续执行从 Firestore 检索数据的其他函数,使文档名称(usersDB 和 notifDoc = "")为空,从而产生错误。有没有办法在继续执行其他功能之前先等待“retrieveDB”,或者有什么地方可以放置“retrieveDB”以使其首先执行/完成?或者有没有更好的逻辑来实现我想要的?
【问题讨论】:
-
见also
标签: asynchronous dart flutter future