Flutter中Redux框架使用简介
本文最后更新于:3 个月前
Redux
是一种状态容器,提供一种状态管理的机制。在React-Native
和Flutter
中,都有对应的集成方法。
在
Flutter
中,官方提供了基础的状态管理的控件InheritedWidget
,所以本质上flutter_redux
只是对InheritedWidget
的封装
一、集成
pubspec.yaml
中引入需要引入对应的插件包,具体最新的版本,需要在官方网站站查询
1 |
|
调用flutter packages get
命令加载插件
二、简单介绍
Store
Reducer
State
Store
负责保存各种方法和属性的实例,其中主要参数reducer
、initialState
和middleware
其中
reducer
是绑定数据和操作的类,包含两个属性,state
和action
,需要在reducer
中判断每个action
具体对应到什么参数操作Store
实例创建完成后,需要加入到widgets
树中去,需要使用StoreProvider
类,Store
实例必须要加入到widgets
树的最顶层,所以,StoreProvider
要比整个APP
的入口MaterialApp
更高,仅次于runApp
的方法在任意一层
widget
中使用快捷的of
方法,即可从context
中获取到Store
实例对象redux_thunk
插件提供从接口请求数据的绑定操作,将thunkMiddleware
值传入Store
的middleware
参数,通过store.dispatch
方法可以调用绑定的数据请求的方法,数据请求的方法需要有返回值类型ThunkAction<State>
,此类型为定义的别名,1
typedef dynamic ThunkAction<State>(Store<State> store);
所以直接
Store
对象,并在方法中实现具体的请求参数等逻辑dispatch
触发数据请求后,还需要继续执行dispatch
操作,继续触发action
,通过判断action
类型来执行具体的数据保存操作,全部执行完成后,数据会保存在State
中,此时redux
会触发数据变化的通知,重构StoreConnector
中builder
的实现
三、示例代码
https://github.com/AnderGH/flutter_redux_demo/blob/master/demo_redux/lib/main.dart