Redux是一种状态容器,提供一种状态管理的机制。在React-Native和Flutter中,都有对应的集成方法。
在
Flutter中,官方提供了基础的状态管理的控件InheritedWidget,所以本质上flutter_redux只是对InheritedWidget的封装
pubspec.yaml中引入需要引入对应的插件包,具体最新的版本,需要在官方网站站查询
dependencies:
flutter:
sdk: flutter
redux: ^4.0.0
flutter_redux: ^0.6.0
redux_thunk: ^0.3.0
调用flutter packages get命令加载插件
StoreReducerState
-
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>,此类型为定义的别名,
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