我对编程相对较新,我真的不明白为什么这种情况不断发生,未来函数的全部意义不就是等待我们收到所需类型的数据吗?
class CardsDataBase extends ChangeNotifier {
String folderBoxName = 'default';
CardsDataBase(){
folderBoxName = getBoxName();
}
Future<String?> getBoxName() async{
final SharedPreferences prefs = await SharedPreferences.getInstance();
String? boxReferenceKey = prefs.getString(AppConstants.kBoxPreferenceKey);
return boxReferenceKey;
}
//Other stuff
}
我尝试将
await
放在 getBoxName
之前,但它不允许我这样做,因为它是构造函数。
另外,有没有更好的方法来添加此功能? 我试图做到这一点,一旦用户使用他们的帐户登录,就会打开一个包含该用户 ID 的配置单元框。因此,当他们注销并使用不同的帐户重新登录时,他们将拥有该新帐户的本地数据。
从共享首选项中获取值是一个异步操作,因为它可能需要一些时间才能完成。没有办法将异步操作变成同步操作。而且也无法在构造函数中使用
await
(正如 Randal 评论的那样)。
解决办法是:
StatefulWidget
。CircularProgressIndicator
。setState
。Flutter 文档和第 3 方教程中对此进行了相当广泛的介绍,因此我建议检查上面包含的链接: