1 项目推荐
上个周六休假,日常审核 wanandroid 上的项目,直至看到了该项目:
https://github.com/phoenixsky/fun_android_flutter
先下载 apk 体验一下再说,不夸张的说,用起来非常舒服,一些效果做的非常棒。
下面让我来举例:
全局的色调切换,这个颜色切换非常顺畅:
全局字体修改:
这个下拉效果是我一开始没注意到的,大力下拉一次发现,感觉效果非常赞。
PS:我已经找小缘抽空研究下这个效果了,目测后续的招式会有类似的效果。
列表 loading,顶部还提供了一个下拉列表用于选择:
点赞动效:
开源地址:
https://github.com/phoenixsky/fun_android_flutter
apk下载地址:
https://www.wanandroid.com/blogimgs/16ddfae2-552d-4f14-ae53-7c3269222ed9.apk
https://github.com/phoenixsky/fun_android_flutter/releases/download/0.1.1/FunAndroid_0.1.1.apk
好了,这个项目其实是用 Flutter 写的,可以看到丝滑程度原来没有感受出来和原生的差异。
而且作者在 readme 中说明后续将写大量博客,用来写该项目用到的技术与遇到的问题,感觉一个优秀的专题即将诞生。
2
相关技术介绍
技术相关介绍,我就以作者自己描述为准啦,这里能找到什么?
1. Provider状态管理的最佳实践,虽然Google很早就废弃了Provide,宣布Provider为推荐的状态管理工具,可是在开发中,我们总是会遇到很多问题
比如Provider的几个衍生类在具体的业务中应该怎么使用?
页面最初需要的数据什么时候进行初始化,在哪里初始化。
如何将页面的几个常用状态loading、error、empty、idle、unAuthorized进行组合使用。
常用的下拉刷新,上拉加载更多应如何服用才能效果更佳
Widget在dispose后,model不再notify()。
2.清晰的代码结构。
让页面归页面,让业务归业务,所有的业务逻辑都在view_model中,Widget只关注页面本身。
3. 不要再满屏幕的setState()。
同一页面内可以利用Flutter框架给我们提供的各种XxxBuilder,来局部刷新。
多层嵌套可使用前边提到的Provider。
当然颗粒度足够细的Widget,还是要使用setState()。eg: ChangeLogPage中的ChangeLogView 功能单一,刷新不会影响别的widget。
4. 实现了App的基础功能,可copy当作模板代码快速开发
- 主题切换
- 夜间模式切换
- 字体切换
- 漂亮的骨架屏
- 利用IDE插件i18n进行国际化
- Dio结合Cookjar,实现玩Android的登录功能
- AnimationList结合SmartRefresh的常规数据加载
5. 当然还有WanAndroid本身也有不错的内容,每日闲暇时,可以读一读。
3
一些感受
从开源 wanandroid客户端的数量以及质量来看,真的是超出我个人想象的,我手机上装了很多个开源版本,从 UI 设计、用户体验、功能完善度都远超我的预期,我甚至觉得开放玩 Android 的全部内容数据是我做的最正确的一个决定。
后面我会按照各种技术的分类分别推荐一个开源的项目给大家,例如按照:MVP ,MVVM,JetPack,Kotlin, Flutter,小程序等。
比较开心的是,从这位作者的 readme 看到了这个原生的 wanandroid 项目:
https://github.com/goweii/WanAndroid
作者做这样一个开源项目目的竟然是经常在地铁上阅读,很开心,瞬间感觉网站被认可:
开发初期主要是为了试水一些自己开发的开源框架,但是后面发现本人对这个APP的使用频率还是挺高的,在坐地铁的时候都会拿出来刷一刷文章。所以决定把这个APP做好看,做好用,不至于影响刷文章的心情。
好了,周五了,大家都开心一点吧,一篇轻松的文章,祝你们周末愉快~~