我正在使用该包向我的 Flutter 应用程序Provider
提供 BLoC 对象(手写,未使用bloc
或包)。flutter_bloc
我需要进行一些异步调用才能正确初始化 BLoC(例如,设置和其他保存的信息SharedPreferences
)。到目前为止,我已经将这些async
调用写入了几个单独的函数中,这些函数在我的 BLoC 的构造函数中调用:
class MyBloc {
MySettings _settings;
List<MyOtherStuff> _otherStuff;
MyBloc() {
_loadSettings();
_loadOtherStuff();
}
Future<void> _loadSettings() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
// loads settings into _settings...
}
Future<void> _loadOtherStuff() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
// loads other stuff into _otherStuff...
}
}
我想保证_loadSettings()
并_loadOtherStuff()
在我们进入应用程序太远之前完成,以便依赖于设置/其他内容的代码加载正确的信息(例如,我希望在我出去进行一些网络调用之前加载设置,初始化通知等)。
据我了解,构造函数不能是异步的,所以我不能await
在构造函数上。我试过给我的 BLoC 一个init()
调用_loadSettings()
和/或的函数(或类似的东西) _loadOtherStuff()
,但我很难找到一个放置它的好地方。
我应该把这些电话放在哪里?还是我只是误会了async/await
?