【发布时间】:2021-05-09 00:07:27
【问题描述】:
我想知道是否有任何方法可以仅在应用程序启动时调用函数,但在构建小部件之前。我只想在应用程序启动时从 JSON 中获取数据。但是方法在提供者中并且需要上下文。
我尝试了几种方法,但没有什么是完美的。我在 HomeScreen() 的 initState 上调用了该函数,但仍需要刷新应用程序才能看到。 (因为该方法是在布局构建后调用的..所以没有加载任何项目)
void initState() {
super.initState();
Provider.of<Utils>(context, listen: false)
.fetchDataFromJSON()
.then((value) {
setState(() {});
});
仍然需要刷新或更改页面来加载项目。我在 tabScreen.dart 中执行此 initState。显然,在 HomeScreen 上创建元素所需的数据但第一次没有加载。
编辑:我通过更改调用函数的位置来修复它。我的错误是我从 TabScreen 的 InitState 中调用了初始状态。我将其更改为 HomeScreen 的 InitState,它运行良好。希望我的错误对其他人有所帮助。
【问题讨论】:
-
在获取后调用
notifyListeners(),因为函数在Provider中。或者在initState你可以做fetchData().then( (_) => setState(() {}) );
标签: flutter