Closed winsonet closed 5 years ago
android/ios 传统 app 开发 ,每个页面的状态都是随着系统回调来创建/ 销毁,model / view / presenter 也跟着页面状态来创建 / 销毁 / 回收,redux 状态页面管理显得多余,而且页面间状态共享也不是特别多。
flutter 只是通过 dart 运行时改变 renderNode 的状态 再通过调用 skia 2D引擎 将图像渲染出来 本质上这块显示 是 surfaceView 还得通过 android/ios 系统的 setContentView 再走系统的生命周期 并没有频繁的页面创建回收,有的只是 widget 的组件的一些状态变化,进而引起渲染的视图变化
redux 是一种前端流行的状态管理机制,因为前端页面经常是单页应用,涉及到组件间状态共享 ,和 flutter widget tree 很类似,一个应用就一棵树,树的各个分叉都需要状态修改,共享 我之前做过一个前端小项目用过 类似 redux 的 叫Vuex,你可以根据这个写一个类似的状态管理容器store
Vuex 理解:针对vue的数据管理集合,类似于数据库 action,Mutation类似于事物和存储过程 中文文档: https://vuex.vuejs.org/zh/guide/ 项目使用: https://github.com/woaigmz/postcard
针对的您上面提到的问题:
mvp 不需要类似的状态管理,但是也可以共享一些页面特有的标识,只需要一块共享内存/本地磁盘等 ·
redux 更面向数据驱动(参考下 alibaba 的 fish_redux),应该是和 mvp 或 Bloc (google 了解一下)同等级的 代码设计模式
用户登陆信息获取可以通过内存或者文件 shareperface 等 redux 提供了一系列 action 规范,更是一种架构思想
我理解的只有这么多了😂 最近网上看到一些项目,您可以参考下:)咱们一起学习 架构Sample: https://github.com/Yuzopro/flutter_architecture OpenGit_Flutter项目: https://github.com/Yuzopro/OpenGit_Flutter/tree/master OpenGit_Flutter项目BloC尝试: https://github.com/Yuzopro/OpenGit_Flutter/tree/dev_blo OpenGit_Flutter项目Redux尝试: https://github.com/Yuzopro/OpenGit_Flutter/tree/dev_redux
哇,真是太感谢啦,没想到你能给我这么详细的回复!其实我之前就是看了
https://github.com/CarGuo/GSYGithubAppFlutter
的作者说过一段话,说MVP的使用发现有些问题,在做下拉更新是不太好用,所以他才转向使用了Redux的,因此我才对此产生了困惑。其实我也是接触flutter不久,只是自己勉强完成了一个项目,但很我概念都还不太清楚,发现自己的项目也非常粗糙,呵,所以才想研究下这些模式看哪个适合自己。
感谢你的建议和提供的连接,我会再仔细研究研究的 :)
对了,其实我在运行你的代码时,发现有些错误,我今晚再发个issue请教下,谢啦!
我其实也看了好几个flutter的设计模式应用,感觉还是你这个版本的MVP比较适合我,但我想请教一下MVP里如何对状态进行管理呢?是否还要配合上 Redux 才比较好(如果是,不知能否提供一些示例呢)?如果只是MVP框架,也可以实现像 Redux 这种全局变量效果吗?如比较典型的应用就是用户登录后的用户信息获取。
如能抽空解答就太感谢啦:)