这些年,我与Flutter……
2017年
12月
- 为公司规划中的新项目调研跨平台方案可行性,在尝试了包括React Native、 ionic、 Cordova、 Cordova、 Weex 等在内几乎当时所有流行的方案之后,竟没有一个能够让人满意的。直到发现了当时还在 alpha 版的 Flutter,被其优秀的开发体验、精妙的架构设计和惊艳的流畅度表现所折服,于是开始正式研究该框架。
2018年
1月
- 加入了当时(直至今日仍是)人数最多的 Flutter 技术交流群(Flutter 中文用户组 qq:482462550)。
- 发现当时没有用于将 json 解析生成数据类模板代码的工具,于是在GsonFormat的启发下,用3天时间撸出了JSONFormat4Flutter的第一版,并分享在交流群内供群友使用,获得了最初的好评。
该工具也成为了目前我 GitHub 上 Star 数最多的项目,虽然在易用性上我确实花了一些心思,但是就代码质量而言这就是一坨💩,能够获得这么多的关注更多的是因为当时没有更好的选择,俗话说“来的早不如来的巧”,这个工具就是出现的时机又早又巧,占了大便宜😂
2月
- 开始尝试编写公司项目的 demo —— 多语言的小说阅读器。
- Flutter beta 版发布,开始在网络上安利此技术(e.g. Flutter 终于 beta 了,似乎没什么关注度啊,我来刷一波):
3月
- 加入 Flutter中文开发者·翻译组,贡献了几篇英文官网文档的翻译(e.g: https://github.com/flutter-dev/website/blob/zh-cn/android-release-build.md)
- 被交流群群主大佬番茄沙司邀请,成为群管理,参与日常群管理工作、回答群友问题,并在之后的一段时间和包括血心、低调、法的空间等在内的很多大佬交流讨论了很多问题。
4月
- 为了解决 Flutter 项目引入图片资源需要手动编写资源配置文件的麻烦,写了一个自用的 dart 脚本用于自动遍历指定的目录,将其中的文件自动添加到配置中,获得好评后将这个脚本通过Flutter中文开发者flutter-dev开源分享,启发了许多朋友用同样的思路实现了更为方便的工具和插件,丰富了 Flutter 尤其是在国内的生态。
- 编写阅读器 demo 自定义背景颜色功能的过程中发现,Flutter SDK 中对颜色格式转换的代码存在严重 BUG,于是第一次尝试为开源项目提交PR:Fix hue to 0.0 when red == green == blue。
- 发现基础组件 TabBarView 的状态保持存在严重 BUG:Use TabBarView with AutomaticKeepAliveClientMixin and with 4 or more pages will cause error
5月
- 开源并发布了小说阅读器 demo 中编写的电量指示器插件:battery_indicator。
- 开源并发布了小说阅读器 demo 中编写的动态获取组件大小和位置插件:rect_getter。
- 阅读器 demo 成型,实现了包括开页特效、自制排版引擎、分页算法等许多功能:
6月
- 团队内推广 Flutter 失败,领导的理由是不能接受冒险采用尚未正式发布的新技术。考虑到团队技术氛围问题和公司运营情况,最终决定辞职。
- 离职后休息期内,继续玩 Flutter。
7月
- 利用B站开源的ijkplayer,实现了一个增强版的视频播放器插件demo,支持多种格式以及流媒体直播:
受时任掘金编辑程六金大佬之邀,向从0到1:我的 Flutter 技术实践 | 掘金技术征文活动投稿:
参与社区讨论:Provide method and/or config to programmatically scroll to ListView index,通过 gist 分享的解决方案获得了合计 37 Star:
debuggerx01 / visible_items_of_listview.dart
debuggerx01 / JumpToIndexDemo.dart为解决 Dart 解码图片资源效率过低问题,验证了由原生侧进行图片解码并生成缩略图,再传输至 Flutter 侧显示的思路可行性。
9月
- 凭借 Flutter 经验入职新公司。但后续因公司业务规划变更,实际是写了一年半的 Node.js 和 React……但是由于得以深入接触 React 及 Taro 等前端方案,对 Flutter 的理解也更加深入。
2020年
5月
- 公司受疫情影响过于严重,于是再次凭 Flutter 经验入职一家专注于心电检测的大健康公司,使用 Flutter\Next.js 开发双端应用。
6月
- 实现了一个可以在 Flutter 项目编译前后执行自定义脚本的工具,并默认简单实现了一套类似C语言中条件编译的标记语法,可以实现同一套代码库根据编译时是 debug/release 模式或者传入的渠道名而编译出不同的产物,待生产验证后开源分享。
11月
- 使用体验&吐槽:Flutter 的开发体验真的是很好
12月
- 第一阶段开发接近完成,达成成就:不写一行原生代码实现完整的商业应用。
- 利用 GitLab 的 CI/CD 实现了项目的分版本自动化打包,规范了项目交付、测试、推送更新提醒的过程,极大提高了工作效率:GitLab CI/CD (一) :自动打包部署Flutter项目
2021年
2月
- 春节期间通过研究实现重要突破,在app中使用纯dart语言实现了高效的实时QRS波心率识别算法,极大提高了app的使用体验和专业度
3月
- 完成公司项目的空安全迁移,并将迁移过程的心得记录为博客,收获了不错的搜索引擎权重和阅读量:迁移Flutter项目到空安全的血泪史——有血、有泪、有💩。
4月
- 更新 JSONFormat4Flutter 以支持最新的空安全语法:JSONFormat4Flutter v0.9 更新说明
6月
- 公司项目app正式上架AppStore:App Store 上的“百二健康”
9月
- 公司项目app正式上架Google Play:百二健康Live120 - Google Play 上的应用
- 开始个人开源项目 DDE 手势管理器 的功能规划和界面设计,决定使用 flutter desktop 方案开发
11月
- 为 DDE 手势管理器 的后端框架选型为 dart 语言的 Angel3,并参与社区开发,为该项目贡献了一些新功能和错误修复,贡献度仅次于作者:Contributors to dukefirehawk/angel
2022年
2月
DDE 手势管理器 初版开发完成正式上线,并成功上架 deepin/UOS 应用商店:
4月
从医疗健康公司离职,并入职一家AI领域、做虚拟人社交产品的公司,使用 Flutter 做出海项目。
作为一款主要受众是欧美市场年轻用户群体的 To C 产品,项目里有很多酷炫的设计和动效,比如:
项目期间有如下积累:
- 入职编码测试demo:Chat Demo ,有基本聊天界面、文字和图片发送、消息点赞等功能
- 群聊测试demo:Group Chat Demo ,主要是实现了群聊场景下的“爬楼”功能
- 通用气泡提醒组件demo:Bubble Demo ,一个智能的为任意组件添加提醒气泡的小组件
2023年
4月
根据 Deepin 论坛用户的需求,花了2、3天做了个 Linux 桌面二维码识别工具,并上架深度应用商店:
[应用分享] 识别屏幕二维码的APP上架了
6月
历时一年半,终于把 在 flutter 中利用 source_gen 实现条件编译 的上中下三篇教程写完了😂