2分钟
05 flutter_redux-1
相信如果是前端开发者,对于 redux
模式并不会陌生,而 flutter_redux
可以看做是利用了 Stream
特性的 scope_model
升级版,通过 redux
设计模式来完成解耦和拓展。
当然,更多的功能和更好的拓展性,也造成了代码的复杂度和上手难度 ,因为 flutter_redux
的代码使用篇幅问题,这里就不展示所有代码了,需要看使用代码的可直接从 demo 获取,现在我们直接看 flutter_redux
是如何实现状态管理的吧。
如上图,我们知道 redux
中一般有 Store
、 Action
、 Reducer
三个主要对象,之外还有 Middleware
中间件用于拦截,所以如下代码所示:
- 创建
Store
用于管理状态 。 - 给
Store
增加appReducer
合集方法,增加需要拦截的middleware
,并初始化状态。 - 将
Store
设置给StoreProvider
这个InheritedWidget
。 - 通过
StoreConnector
/StoreBuilder
加载显示Store
中的数据。
之后我们可以 dispatch
一个 Action ,在经过 middleware
之后,触发对应的 Reducer 返回数据,而事实上这里核心的内容实现,还是 Stream
和 StreamBuilder
的结合使用 ,接下来就让我们看看这个流程是如何联动起来的吧。
class _ReduxPageState extends State<ReduxPage> {
///初始化store
final store = new Store<CountState>(
/// reducer 合集方法
appReducer,
///中间键
middleware: middleware,
///初始化状态
initialState: new CountState(count: 0),
);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: new Text("redux"),
),
body: Container(
/// StoreProvider InheritedWidget
/// 加载 store 共享
child: new StoreProvider(
store: store,
child: CountWidget(),
),
));
}
}
学员评价