考虑到我们有一个类似于以下的函数,从数据库加载数据:
loadData() async {
loadedData = await loadingData();
return loadedData;
}
我们希望在使用Provider
包的相同或其他类/小部件中使用此loadedData
。
我尝试了很多方法,比如将loadData()
放在initState()
或didChangeDependencies()
中,如下所示:
@override
void didChangeDependencies() async {
super.didChangeDependencies();
data = await Provider.of<>(context , listen: false).loadData();
}
或者使用Consumer
或尝试在应用程序启动时使用ChangeNotifierProxyProvider
传递数据,但大多数时候仍然有问题,并得到错误,如null
值错误或一些其他相关错误(目前不记得了)。
我想知道从数据库中获取数据并等待Widget
中的数据的正确方法是什么?
例如,我知道如果我在Provider
命令中将(listen: false)
更改为(listen: true)
,我可以读取数据,但似乎它更新了应用程序很多,我可以听到CPU风扇的噪音,我不喜欢它!
请给予我一个简单的代码示例/片段,以了解正确的方式做到这一点?
3条答案
按热度按时间7fhtutme1#
您可以使用
FutureBuilder
加载数据,如下所示:j91ykkif2#
下面是一个使用提供程序的loadData示例。如果不想立即加载数据,只需删除initState()方法。
vkc1a9a23#
您可以使用FutureBuilder或通过使用车削操作员。