我有 ChangeNotifierProvider 对象,它使用存储的 sqflite 资产数据库,需要在开始时加载作为未来。问题是 ChangeNotifierProvider 不会等待未来的操作完成。我试图添加一种机制让 ChangeNotifierProvider 等待但无法成功。(尝试过 FutureBuilder、FutureProvider、一起使用等等……)
注意:FutureProvider 解决了等待问题,但它不像 ChangeNotifierProvider 那样监听对象。当我在多提供者中使用它们时,我有两个不同的对象实例......
我在 StackOverflow 或其他站点中找到的所有解决方案都没有针对此特定问题提供通用解决方案或方法。(或者我找不到)我相信一定有一个非常基本的解决方案/方法,并决定寻求您的帮助。如何实现此代码的未来,或者如何让 ChangeNotifierProvider 等待未来?
这是我的摘要代码;
class DataSource with ChangeNotifier {
int _myId;
List _myList;
int get myId => _myId;
List get myList => _myList;
void setMyId(int changeMyId) {
_myId = changeMyId;
notifyListeners();
}
.... same setter code for myList object.
DataSource(){initDatabase();}
Future<bool> initDatabase() {
.... fetching data from asset database. (this code works properly)
return true;
}
}
main.dart
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider<DataSource>(
create: (context) => DataSource(),
child: MaterialApp(
home: HomePage(),
),
);
}
}
Following code and widgets has this code part (it works fine)
return Consumer<DataSource>(
builder: (context, myDataSource, child) {.......