Flutter之fish redux状态管理浅析

什么是Flutter?

Flutter 是来自谷歌的一个出色的跨平台框架,可用来为移动、桌面和 Web 平台构建应用程序。
flutter跨平台   目前,Flutter在移动端的应用比较成熟,阿里的咸鱼、美团、头条等顶级互联网公司都有实践应用,虽然生态资源方面不如React Native,但发展势头非常迅猛,流畅的性能体验,以及苹果、安卓代码的一致性方面都令人印象深刻。
  虽然Web端和桌面端的跨平台应用仍未达到生产环境下的使用,但还是相当值得期待的。

什么是redux?

通俗地说,redux可以理解为基于数据驱动交互界面的一种新的开发模式,特别适合Web端和移动端的应用开发。对于习惯于CS架构的开发人员来说,首次接触redux的概念特别不适应,CS下的界面控件赋值非常简单,给某个控件的属性赋值,界面就会立即做出相应的改变。如果使用redux修改界面的数据,则首先通过Reducer方法给数据池中的某个数据赋值,然后底层逻辑触发界面的刷新操作,从而使得界面的显示结果发生改变。
redux流程  上图演示了redux的大致工作原理,图中并未使用redux的专业术语,方便初次接触的程序员更容易理解一些。根据上图,可以总结出关于redux开发的一些重要特征:

  1. 界面、数据与业务逻辑是分离的,这种分离在复杂的业务逻辑实现时,会带来很多好处:代码结构清晰、便于升级、便于维护、开发效率更高;
  2. 界面的显示方式、布局与内容是被数据驱动的,通过状态数据来控制界面改如何显示与布局,这意味着界面设计是动态的,非常灵活;
    动态页面设计上图演示了同一个页面源码,在数据驱动下,其动态页面布局与显示的效果。
  3. 由于状态数据与内容数据都是可以保存的,那么记录每一个用户动作对应的数据视图后,完全可以通过数据回放的方式模拟用户操作的每一个动作,对代码调试与分析用户行为具有重大意义;
  4. 状态数据统一保存,可以避免多处保存时状态维护的混乱。

如果还有其它重要特性没有写出来,请大家指正啊!

什么是fish redux?

fish redux是阿里旗下闲鱼团队开源的一种redux框架,基本理念与其它状态管理框架大同小异,例如:scoped_model、provide、RxDart、Bloc等都是非常出色的状态管理框架。网上看资料说,fish redux特别适用于构建中大型的复杂应用,至于为什么不是很理解。尝试参考官方的示例程序,发现需要学习消化不少新的概念,尝试建立简单的应用逻辑后,感觉确实复杂,想过放弃,在学习他人使用provide框架过程中,发现实现逻辑虽然简单,但功能不够强大,似乎只支持全局数据池,不支持页面级别的数据池,在对列表数据项的渲染逻辑中,无法做到部分数据项内容或状态的局部刷新显示,我想这就是fish redux性能更加强大的体现之一吧。不得已,继续回到fish redux框架的学习中吧。

fish redux基本概念介绍

以下的一些基本概念是在开发《信息导航》APP过程中,逐步消化整理出来的,更加高级的概念由于没有使用机会,也未深入学习和了解。下述这些基本概念应该够用了。
fish redux原理程序界面结构  上面两个截图分别展示了fish redux基本概念原理图以及对应的页面程序结构。下面分别介绍框架的一些基本概念:

  • page state
    page state用于保存页面内部的状态数据与内容数据,不作用于应用程序的全局,页面关闭,里面的数据也相应被销毁。对应上述截图中的“home_state.dart”文件。
  • global state
    global state用于保存应用程序全局的状态数据与内容数据,可以被所有的页面访问和修改,对应于"global_store/global_state.dart"文件。
  • clone
    为了提高数据刷新界面效率,原则上只有数据发生变化时才触发相应局部界面的刷新。那么如何判断保存数据的state对象发生变化了呢?使用oldState == newState基于对象地址是否发生变化进行快速判断,不必递归遍历对象的每个数据属性。当数据发生变化时,首先将原有的state对象clone一份(原始数据都复制一遍)为newState对象,将变化的数据赋值到新对象的相应数据属性中并返回,这就是一个reducer方法实现原理。如果数据没有变化,则只返回原始state对象,不会触发界面的刷新。clone方法在state中实现,因为state必须继承于Cloneable的泛型类。
  @override
  IntroState clone() {
   
    return IntroState()
      ..checkValue = checkValue
      ..currentTheme = currentTh
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值