产品级Flutter开源项目FunAndroid,Provider MVVM的最佳实践

|

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

|
| — | — | — |
|

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

|

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

|

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

|
|

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

|

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

|

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

|

项目地址

github.com/phoenixsky/…

下载地址

蒲公英下载页

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码编译

  • Flutter SDK (Channel dev, v1.10.4)

  • 如果要查看运行效果,一定要使用Release模式,流畅程度差距非常大

Flutter的DebugRelease的编译模式不同,下分别是 JITAOT.Debug模式支持hot reload.

  • iOS运行在splash页面卡住,需要检查当前的scheme,如果为release,需在命令行执行flutter build ios

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 项目国际化部分依赖了AndroidStudio的插件flutter_i18n 需要在plugin仓库中,搜索Flutter i18n.安装插件成功后,重启AndroidStudio后,会生成lib/generated/i18n.dart文件

具体方案和使用参考掘金-rhyme_lphlv的博文

介绍

借用群里水友的两句对白,在预览版出来时候

  • 1A:话说玩Android的开源项目已经多如牛毛了。

  • 3C:我想看最漂亮的。

感谢这位朋友对Fun Android的认可。

关于App的主题风格,不全是Google倡导的Material Design 也不全是Apple的Cupertino Style。由于我是一个Android开发者,但又长期使用的iPhone,所以App的风格是两者的结合又夹杂了点私货。个人认为iOS版本的确实好看点。

代码中存在的问题,请大家积极提Issue.

更新

V0.1.12 2019-10-21 (未发布)

  • 下拉刷新列表在加载失败时,如果当前页没有数据显示错误提示页,有数据则弹出toast提示

V0.1.11 2019-10-17

  • 增加网络加载失败的提示

V0.1.10 2019-10-16

  • 修复收藏页面’shareUser’字段为空导致报错的bug

V0.1.9 2019-10-14

  • 极致黑(Native的闪屏页面适配darkMode)
  • 首页banner高度根据屏幕宽高适应
  • 签名文件调整

V0.1.8 2019-10-13

  • 文章列表加入分享人
  • 首页加入数据为空的逻辑判断
  • ViewStateModel中逻辑优化,bug fix
  • 状态栏字体颜色优化
  • 修复TextField中hint为中文时不居中的问题

V0.1.7 2019-09-23

  • DarkMode自动跟随系统设置
  • App更新组件调整
  • 适配Dio3.0版本
  • pull_to_refresh更新:加入国际化

V0.1.6 2019-09-20

  • 修复收藏列表进入详情时,页面报错的bug

V0.1.5 2019-09-19

  • Flutter SDK更新至Channel dev, v1.10.3,修复我的页面莫名卡死的问题
  • 修改Android端App名称为Fun Android

V0.1.4 2019-09-18

  • 适配Flutter 1.9.x
  • Android加入版本更新
  • 加入LeanCloud API云服务
  • 移除修复首页黑屏问题的代码官方在1.10.1版本已修复
  • 移除之前屏幕适配方案,对NativeView影响过大
  • 修复版本更新导致的AppBar中进度条颜色与背景色不明显的问题
  • 重构Http使用方式,解耦性更好
  • 首页banner高度调整
  • Android状态栏透明

2019-09-10

  • flutter版本更新
  • 适配更新AppBar区域CupertinoActivityIndicator的主题色彩冲突
  • 移除OffState和Indicator的组合使用,优化性能
  • 调整textField的clear实现方式,防止报错

2019-09-09

  • 修复各页面里文章 收藏 状态没有同步的问题
  • 首页收藏后,其他tab页对应item的收藏状态同步
  • 我的收藏页面里移除收藏.其他页面状态同步
  • 登录登出后各页面收藏状态刷新
  • 如果相同账号在其他平台修改过收藏状态,只需要刷新列表即可同步收藏状态.(WanAndroid接口目前存在问题)
  • 优化Dropdown弹出动画
  • 首页初次加载数据禁用上拉记载更多功能
  • 登录页面输入框可通过回车键切换

2019-08-30

  • 修复积分数值在登录后没有刷新的bug
  • 修复进入Splash页面短暂黑屏的bug
  • 修复未登录时,点击收藏还可以播放动画的bug
  • 默认主题色调整为亮色

2019-08-29

  • 添加积分记录和排行榜功能

2019-08-28

  • 在设置中添加WebViewPlugin的开关
  • 在详情中移除收藏后,回到收藏列表页面自动刷新

2019-08-26

  • 更新收藏动画的实现方式,之前实现的方式侵入性太强,每个页面都要先隐藏一个小❤❤。现在换了路由➕Hero的思路,重新调整了Flare。显示动画一行代码就ok。(如果你运行代码之后发现,该动画与图上会有一丝丝不一致,列表项右下角的小心会闪一下.不用担心那是flutter的bug,目前在master分支已经修复.见pr-37341)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

项目结构

|
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

|

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

|
| — | — |
| | |

Provider MVVM的简单使用方式

  • 快速添加一个拥有下拉刷新,上拉加载更多的页面.比如开发一个玩Android首页列表页面
  1. Model

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. ViewModel

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. View

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以上是Provider结合ViewModel的基础使用方式,考虑了App中会出现的比较全面的情况,希望大家一起探讨使用方式

另外在判断页面状态的时候,其实拿model.viewState == ViewState.busy会更严谨一点.为了书写方便,加了一个对应方法

这里能找到什么?

  1. Provider状态管理的最佳实践,虽然Google很早就废弃了Provide,宣布Provider为推荐的状态管理工具,可是在开发中,我们总是会遇到很多问题。

  2. 比如Provider的几个衍生类在具体的业务中应该怎么使用?

  3. 页面最初需要的数据什么时候进行初始化,在哪里初始化。

  4. 如何将页面的几个常用状态loadingerroremptyidleunAuthorized进行组合使用。

  5. 常用的下拉刷新上拉加载更多应如何服用才能效果更佳。

  6. Widget在dispose后,model不再notify()。

写在最后

对程序员来说,很多技术的学习都是“防御性”的。也就是说,我们是在为未来学习。我们学习新技术的目的,或是为了在新项目中应用,或仅仅是为了将来的面试。但不管怎样,一定不能“止步不前”,不能荒废掉。

![
[]


文章以下内容会给出阿里与美团的面试题(答案+解析)、面试题库、Java核心知识点梳理等

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
gr2/auto-orient/strip%7CimageView2/2/w/1240)

[外链图片转存中…(img-9yBZ37GY-1715177475134)]
[外链图片转存中…(img-qwugtsn7-1715177475135)]

文章以下内容会给出阿里与美团的面试题(答案+解析)、面试题库、Java核心知识点梳理等

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 28
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值