【FlutterUnit周边】历时两年 FlutterUnit 2.0 版本到来
前言
FlutterUnit
从 2020年04月15日
开源,到现在近两周年了。能持续维护两年的 Flutter
开源项目,并且跑得起来的,应该也没有太多吧。由于各种主管和客观原因,FlutterUnit
的更新不是很频繁,但 Flutter
版本的更新,都会及时对它进行维护,保证它是可以运行的。
前面很长一段时间主要 业余时间
会把精力放在小册上, 现在第五本布局小册已经完成,本周三将会上架。FlutterUnit
也会随着我对 Flutter
框架的深入研究而不断完善和进步。
2021
年 FlutterUnit
并没有很大的突破性进展,主要更新在于 组件集录
和 绘制集录
的收集,以及服务端接口的开发。FlutterUnit 2.0
最重要的更新点在于全部组件案例的代码规范性的修改,另外支持应用内版本更新。项目开源地址为 FlutterUnit ,目前 4.8K
星星,也算很不错的成绩了。
1、FlutterUnit 1.0 到 2.0 的历程
FlutterUnit
的时光轴已经作为一个小彩蛋
,内置到 FlutterUnit 2.0
的应用中了,大家可以自己去找找。下面可以根据时光轴的截图,来回顾一下 FlutterUnit
的发展历程:
2、代码的规范性
现在新建的项目中对 const
关键字有了 Dart Analysis
,所以借此契机为 FlutterUnit
中的组件示例代码进行重新审视和优化。毕竟最早的一批代码也是两年前的产物了,当时由于认知的局限性,可能存在一些不规范代码。为了尽可能给初学者一个规范的示例代码,所以对所有的组件代码进行审查。
对于老的项目,可能没有 const
的关键字检查,只需在 pubspec.yaml
的 dev_dependencies
依赖下添加 flutter_lints
即可。
主要的问题有:const
构造及 const
关键字的修饰
无用的包导入:
空安全的遗留问题,非空对象不必判空:
单一属性时,可以不使用 Container
组件,或不必要的 Container
包裹:
不必要的 this
标识:
函数无返回值的处理:
final
关键字的修饰,以及类型未知的,或使用 var
关键字生命变量:
另外,有个小细节,你可以控制 Dart Analysis
的检查项。只要在 analysis_options.yaml
中的 rules
中设置即可。比如由于项目的特殊性,并不想校验文件名的格式,可以通过 file_names: false
取消检查;另外 avoid_print: false
代表不要检查 print
方法。
关于所有的 lints
规范,可以在 dart-lang.github.io/linter/lint… 中进行查看:
3、应用内更新
在进入应用时会通过服务端接口检查最新版本,和当前应用版本进行对比。如果需要升级,会显示小红点进行示意,引导使用者查看,如下左图。如下右图,会显示出新版本的情况,点击即可下载。
小红点提示 | 更新界面 |
---|---|
这里通过 flutter_bloc
对更新/下载
状态进行管理,所以在下载时,你可以随意切换到其他界面而不用担心下载进去会重置的问题。应用下载完后是通过 r_upgrade
插件进行安装的,效果如下。
下载界面 | 更新界面 |
---|---|
应用内升级需要前端和后端的配合,这里简单地介绍一下。如下是获取 app
当前信息的接口,其中记录着最新版本、下载地址、app 大小等信息,另外也或有 增、删、改
对应的接口。
版本更新并非是 app
里实现就完事了的,还要涉及服务器上数据的维护。比如更新版本后,apk 文件上传、更新数据库里的应用信息,如果手动去做未免太过繁琐。所以我在 flutter_unit_tool
中写了一个小工具类,应用打包完成后,只要修改版本号,就可以自动上传文件以及更新数据库中应用信息的事情。
4、绘制集录的更新
绘制集录分为五类绘制,包括 基础绘制
、动画手势
、粒子绘制
、趣味绘制
、艺术画廊
五种集录。其中目前以及收录了不少案例,以至于外甥女老是喜欢拿我的手机玩绘制集录,今后也会不断收录一些新鲜有趣的东西给她玩。
绘制集录-基础绘制 | 绘制集录-动画手势 |
---|---|
比如在这可以和小伙伴来一局 井字棋
的小对战,或者查看 动画曲线
的散点图效果:
井字棋 | 散点图 |
---|---|
或者体验一下从圆中取正多边形的方式;亦或实现绕定点旋转的功能,这些几何方面的探索也许可以让你回归初心,找到一些编程之外的灵感。
圆中取形 | 绕定点旋转 |
---|---|
另外,根据绘制小册的案例,收录了几个粒子案例:
随机粒子生成器 | 粒子分裂 |
---|---|
更多有趣的绘制案例,大家自己去应用中查看吧,另外如果你有什么有趣的绘制示例,也欢迎分享到 FlutterUnit
中来,那时 FlutterUnit
中将展示你的画作,并且标注你的名字。
5、FlutterUnit 的展望与未来
到目前来看,FlutterUnit
仍是我一人维护的状态,FlutterUnit
本意是想靠开源的力量共同维护一份 Flutter
的集录典册。可能是我的影响力优限,也可能是现在真正热爱分享的人太少,白嫖可以,付出免谈。正所谓 穷则独善其身,达则兼济天下
,力量微小时,做好自己就行了,即使无人为伴,也可以缓慢前行。
未来的 FlutterUnit
将会持续保持 组件
和 绘制
的收集,因为官方时不时会弄出几个新组件。另外重点是对后端 flutter_unit_server
的完善,将 FlutterUnit
的组件数据线上化,并且保留本地数据库作为缓存。这样可以实现离线使用以及在线同步最新数据,完成无缝接入。
虽然现在前后端的用户系统和收藏集的线上同步功能已经初步实现,但目前来说,并没有开放的必要。目前我更倾向于 FlutterUnit
作为一个单机版的卡查学习工具,直到组件数据线上化为止。最后希望更多的人可以加入到 FlutterUnit
的维护中,提交组件和绘制的示例。想说的就这么多了,最后 3.28
,祝我生日快乐 ~
转载自:https://juejin.cn/post/7079945217851260958