Fish_Redux(一)关于Fish_Redux的一些概念

2020-01-09  本文已影响0人  CodingMann丶许半仙

fish redux 是什么

Fish Redux 是一个基于 Redux 数据管理的组装式 flutter 应用框架, 它特别适用于构建中大型的复杂应用。
它的特点是配置式组装。 一方面我们将一个大的页面,对视图和数据层层拆解为互相独立的 Component|Adapter,上层负责组装,下层负责实现; 另一方面将 Component|Adapter 拆分为 View,Reducer,Effect 等相互独立的上下文无关函数。
所以它会非常干净,易维护,易协作。
Fish Redux 的灵感主要来自于 Redux, Elm, Dva 这样的优秀框架。而 Fish Redux 站在巨人的肩膀上,将集中,分治,复用,隔离做的更进一步。

fish redux 干什么用的

fish redux 用作flutter项目中的状态管理,在我看来,它可以作为组织Flutter页面的利器。就目前flutter页面 如果把每一个widget都放到一个dart文件中,在阅读源码以及后续的维护上都是非常困难的一件事,使用fish redux就可以打破这种局面,页面中每个Component 都单独出来,清爽了许多。

fish redux的组成

根据继承关系而来的状态树

保存页面状态(例如 主题色)

动作(例如添加)

Action 包含两个字段
推荐的写法是
enum MessageAction {
    onShare,
    shared,
}

class MessageActionCreator {
    static Action onShare(Map<String, Object> payload) {
        return Action(MessageAction.onShare, payload: payload);
    }

    static Action shared() {
        return const Action(MessageAction.shared);
    }
}

处理Action(根据不同的action,修改与action相对应的state返回新state时fish redux层层通知修改页面状态。
两者的区别:
Effect处理类似页面初始化的时候对state 数据做的一些修改 或者 异步请求这些东西
Reducer 处理类似 单击页面中某按钮,修改主题色这样的动作

Reducer

示例代码

Reducer<String> buildMessageReducer() {
  return asReducer(<Object, Reducer<String>>{
    'shared': _shared,
  });
}

String _shared(String msg, Action action) {
  return '$msg [shared]';
}

class MessageComponent extends Component<String> {
    MessageComponent(): super(
            view: buildMessageView,
            effect: buildEffect(),
            reducer: buildMessageReducer(),
        );
}

effect
接收View的"意图",也包括对生命周期的回调。不修改数据,它对数据是只读的,如果要修改,应该发送一个Action到Reducer中去处理。

绘制页面

适配器【主要用于页面中包含 Lisview,适配ListView中每一项,比较特殊】

连接 【描述了主页面的state与页面中的Component的关系】,从page state中存取与之关联的Component的状态。

页面小部件,组成page的一部分,对局部的展示和功能的封装。对功能细分为修改数据的功能(Reducer)和非修改数据的功能(副作用Effect)。于是有了View、Effect、Reducer组件三要素。

对以上内容的组装描述

转载自:https://www.cnblogs.com/zzfstudy/p/11351951.html

上一篇下一篇

猜你喜欢

热点阅读