树袋熊|记一次从 react-native到flutter的换血
[精酿笔记]是我在2016年开发的产品 , 客户端采用的是react-native , 之后再一次时隔比较长的版本升级中 , 我发现升级过程中 , 出现好多问题 , 无奈只能重新创建 , 这导致我又花了很多时间处理引入库的问题 , 而且对于realm数据库在国内升级缓慢的问题 , 长列表刷新滚动问题 , 我也一直很讨厌 , 但当时没有找到更好的解决方案 。
最近一年我的客户端技术栈切换到flutter,深得我心 , 于是这次我决定 , 把这个项目进行换血 , 以便以后维护起来方便 , 避免以后在非逻辑代码编写上花费不必要的时间 。
这次换血花费时间为10天 , 主要时间用在ui以及功能模块编写 , 一部分复用了以前项目的代码 。
这是我目前的项目结构 , 从零开始摸索出来的 , 几个flutter的app都采用这样的结构 。
大概分为:
network-网络模块
db-数据库模块
shared-缓存模块
utils-工具类模块
custom-自定义Widget
models-数据模型
provider-状态管理模块
pages-UI模块
另外之前封装了两个库 , 一个为小的工具库 , 目前包括加入qq群和意见反馈 , 另外一个是腾讯优量汇的广告插件库 , 主要是没有找到合适的库 , 可能是因为只在国内能用到 , 所以只能自己封装 。 最开始 , 这两个库我是写在一起的 , 后来发现Google Play和华为接入腾讯优量汇是无法过审的 , 后边就拆开了 , 这样更灵活 , 每一次改动原因都是根据实践而来 。
这里顺带聊下极光和友盟 , 极光是推送起家 , 友盟是统计起家 , 现在两家的业务线拓展出现重叠 , 都包含了统计 , 推送 , 分享 , 错误日志 。 我相信对于react-native,flutter等采用跨平台的使用者来说 , 若是选择极光而不是友盟 , 其中很大一部分原因 , 就是极光的官方针对三方框架都有官方支持的三方库 , 不知道友盟是怎么看待这个问题的 , 个人觉得针对三方框架支持三方库是非常值得做的 。
flutter中UI的编写和状态管理思想与react-native相似 , 与Android,Ios原生开发的采用布局文件方式稍有不同 , 可以理解为原生中的用代码编写ui 。
对于复杂页面的频繁修改和多人维护问题 , 因为我是独立开发 , 所以还好 , 不过我能想到的解决方式 , 是采用‘解耦’的思想 , 尽量在合理的范围内 , 对Widget进行拆分与封装 , 这样应该能解决复杂页面修改的问题 , 做到修改影响最小化 , 多人维护方面 , 我觉得可以从代码规范来解决 , 制定统一的代码规范 , 统一编程思想 。
至此 , 我的产品中 , 仅剩一款为react-native,其他均为flutter , 这款后边找时间再做切换 。 我不太想聊语言的好坏 , 因为无论哪种定论 , 总会有人出来反驳 。 但真的重要么?它只不过是你手里的一件工具 , 好与坏更大的取决于用的人 。
【树袋熊|记一次从 react-native到flutter的换血】Android 体验地址:
- 分手第一次|鬼鬼自曝7个月没接通告,每个月都花老本,为省钱蹭员工摩托车
- 兵器前沿观察|不知醒悟只知变本加厉,欧盟咋视而不见?,乌克兰一次又一次被坑
- 穿搭|关晓彤终于完胜一次,穿红蓝条纹裙撞衫辛芷蕾,腿长优势太明显
- 中国青年网 谢谢我的“守护神”!,今天完成了第一次轨道中途修正
- 大连聚集性病例地区人员每3天测一次核酸
- 大众报业·齐鲁壹点|普通类常规批第一次志愿明起填报,高考生填报需满足这些条件
- |【图解】人口普查,一次跨越67年时光的旅行
- 解放军报|一次对抗演练 三易导弹阵地
- 有点意思!21世纪仅6次十五的月亮十四圆 可能你一次都没注意到
- 核酸检测|大连聚集性病例地区人员每3天测一次核酸