gpt4 book ai didi

flutter - 在 Flutter 中将数据异步加载到 ChangeNotifier 模型中

转载 作者:行者123 更新时间:2023-12-03 02:46:50 25 4
gpt4 key购买 nike

在我的 Flutter 应用程序中,我有一个小部件

class HomeScreen extends StatelessWidget

使用模型

class HomeScreenModel extends ChangeNotifier

这两个对象使用 ChangeNotifierProvider 绑定(bind)在一起。

当应用程序加载 HomeScreen 小部件时,我想调用 HomeScreenModel 的自定义 init() 函数将一些数据从磁盘异步加载到模型中,然后使用 notifyListeners() 函数通知监听器。这应该做一次。

调用这个 init() 函数的正确位置是什么?
据我所知,对于无状态小部件,没有只调用一次的生命周期函数。不过,我很确定 HomeScreenModel 的构造函数只被调用一次。

从自己的构造函数调用异步 HomeScreenModel.init() 函数是否安全?
关于如何将数据异步加载到作为 ChangeNotifier 实现的模型中,是否有任何最佳实践?

谢谢大家!

最佳答案

经过一番搜索和测试后,我选择从 HomeScreenModel 构造函数中调用 async init 函数。所以我有

HomeScreenModel(BuildContext context) {
var initFuture = init(context);
initFuture.then((voidValue) {
_log.d('init finished');
state = HomeScreenModelState.initialized;

notifyListeners();
});
}

初始化函数原型(prototype)是
Future<void> init(BuildContext context) async

我发现另一种方法是使用 StatefulWidget 并从
initState()

功能。这个函数只被调用一次,就像 ChangeNotifier 构造函数一样。

到目前为止,我没有使用 StatefulWidgets,因为在我看来,它们在 ui 和业务逻辑之间创建了一种强耦合。所以到目前为止,上述解决方案对我来说似乎很好。

我希望它可以帮助某人

关于flutter - 在 Flutter 中将数据异步加载到 ChangeNotifier 模型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57711050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com