【问题标题】:Flutter redux dispatch event when widget is created创建小部件时 Flutter redux 调度事件
【发布时间】:2019-06-22 22:38:22
【问题描述】:

我想在构建小部件时使用 redux 操作加载数据。比如说:

用户打开应用程序,然后呈现 HomeScreen 组件,此页面上有一些类别。

我已经实现了支持多个商店(尚未测试)的 AppState,这些商店使用 FlutterStorage 在 main() 中填充了初始数据。

所以在 HomeScreen 中,我可以使用 StoreConnector 从 build() 访问数据,因为在转换器中我将获取商店,因此我可以调度事件或读取应用程序状态。但这只是在 build() 内部有问题,因为如果在 render 方法中调度 LoadCategories 事件,那么它将进入无限循环。

在 reactjs 中,我能够将调度映射到组件(小部件)属性,因此在 componentDidMount 中,我能够获取数据。这在 Flutter 中似乎是不可能的。

任何想法如何实现这一目标?

谢谢

【问题讨论】:

    标签: redux flutter


    【解决方案1】:

    您的答案是正确的,但根据您的用例,还有另一种选择。根据文档,您可以使用onInitonInitialBuild

    onInit

    这对于在您的 Widget 首次显示时调度获取数据的操作很有用。

    onInitialBuild

    这对于在第一次构建 Widget 后启动某些动画(例如显示 Snackbars)很有用。

    【讨论】:

      【解决方案2】:

      可能不是最好的答案,但我注意到 StoreConnector 有一个 onInit 属性可以满足我的需要。

       @override
       Widget build(BuildContext context) {
         return new StoreConnector<AppState, List<Category>>(
          onInit: (store) {
            store.dispatch(LoadCategoriesAction());
          },
          builder: (context, categories) {
      

      【讨论】:

      • 这个救了我!
      猜你喜欢
      • 2017-11-02
      • 2018-06-25
      • 2020-12-06
      • 2019-08-23
      • 1970-01-01
      • 2018-11-03
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多