用于 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的主要内容,如果未能解决你的问题,请参考以下文章