用于 Web 状态管理的 Flutter

Posted

技术标签:

【中文标题】用于 Web 状态管理的 Flutter【英文标题】:Flutter for web state management 【发布时间】:2019-09-29 16:21:06 【问题描述】:

这个周末我正在玩 Flutter,到目前为止我很喜欢它。我现在正在深入研究状态管理。来自 React 背景,我尝试用flutter_redux 实现redux,但似乎flutter_redux 不起作用,BloC 也不起作用,所以我的问题很明显:有没有人设法在 Flutter for web 中拥有一个功能状态管理器?

【问题讨论】:

你说的它们不起作用是什么意思? 您不能将它们安装为依赖项,因为它们需要与flutter web不兼容的flutter sdk 【参考方案1】:

这并不特定于状态管理。目前没有可以在 Web 中使用的 Flutter 包。

要解决这个临时问题,您需要对每个要使用的包进行 fork,并进行一些更改:

所有对 Flutter 文件的导入都必须从 import 'package:flutter/<whatever> 更改为 import 'package:flutter_web/<whatever>

更改pubspec.yaml

来自:

dependencies:
  flutter:
    sdk: flutter

进入

dependencies:
  flutter_web:
    git:
      url: https://github.com/flutter/flutter_web
      path: packages/flutter_web
  flutter_web_ui:
    git:
      url: https://github.com/flutter/flutter_web
      path: packages/flutter_web_ui

【讨论】:

我这样做已经试图让flutter_redux 工作,但我遇到了其他问题:github.com/brianegan/flutter_redux/issues/128【参考方案2】:

好的,经过长时间的研究,我终于成功了……我想。正如 Rémi 指出的那样,我所做的是分叉 flutter_redux 存储库并更改导入引用,但这还不够,因为我的 IDE 中仍然有一个错误,抱怨 StoreProvider 与:The return type 'StoreProvider<AppState>' isn't a 'Widget', as defined by the method 'build'.

flutter_redux 中,您还需要编辑此文件(实际上是lib 中的唯一一个)flutter_redux/lib/flutter_redux.dart 并更改导入以使用flutter_web:https://github.com/ciokan/flutter_redux/commit/e8a4f099925c2960cc1bd68aa193f8f38dbd01d5

我的编译器现在对我竖起大拇指,我仍然没有;没有完整的工作 Redux,但我怀疑困难的部分已经完成。

【讨论】:

【参考方案3】:

虽然 flutter_web 中没有状态管理,但我的临时解决方法是在 navigation arguments 中传递状态。

【讨论】:

以上是关于用于 Web 状态管理的 Flutter的主要内容,如果未能解决你的问题,请参考以下文章

Flutter状态管理——单Stream和广播Stream

Flutter状态管理——单Stream和广播Stream

Flutter中GetX状态管理的终极指南

Flutter——sdk:状态管理provider

Flutter——sdk:状态管理provider

Flutter——sdk:状态管理provider