FlutterUnit3.4.1 | 来场三方库的收录狂欢吧~

对于一个技术框架的生态来说,三方库是非常非常重要的。Flutter 的朋友都知道 pub 作为官方的仓库,有海量的三方类库供开发者使用。FlutterUnit 作为 Flutter 技术的前沿营地,打算推出一个新的模块:

三方包 : 在应用中,提供插件的推荐、搜索、分类、评价、国际化等,拓宽开发者接触插件的形式。让好的类库不被埋没。

1. 功能简介

之前的留言板功能被放在了 我的 中,主界面的黄金地段增加了 三方库 一栏,目前收录了一百多个常用的三方类库。并将这些数据收集到了我的后端,并提供了分类展示评论 两大功能,这样可以给大家一个讨论类库的场地,聊聊你对插件的看法,用途等。

包主页 包详情

另外,还提供了推荐插件的入口,使用者可以在这里推荐一下目前没有收录,但你觉得很不错的插件。欢迎在这里和大家共享 ~

另外支持根据下载量、喜欢数、发布时间进行排序。

推荐创建 排序方式

本次最大的亮点当属评论了,支持二级评论,大于两条的评论会展示查看更多评论。如果详情页评论总数大于 10 ,底部会有查看全部的评论,支持分页加载:

详情页评论 评论详情页

2. 关于后台

目前后台基于 Rust 做的服务,也基本完成了模块化开发。package 模块负责当前功能相关的所有服务接口的。支持独立测试。分模块最大的好处是功能隔离,这样 AI 可以更高效地辅助编码,而且可以参考一个模块的功能,去开发别的模块。三方库相关的接口 95% 是由 AI 独立完成的:

不得不说,自从换上了 rust 服务,我的 2G 内存的小服务器也更能打一些了。之前使用 Java 的 Springboot 做的服务,上来就小几百兆,现在 rust 运行很久,也就 16 M.

和 AI 讨论数据表的创建,也让我收益颇丰。特别是对于多语言的处理,分离出了 t_pkg_translations 表,可以在不侵入原表结构的情况下,增加字段级别的翻译映射关系。更利于其他字段、其他语言的支持:

为了方便管理数据,我还让 AI 基于 VUE 顺手写了个后端管理系统 ~


3. 关于前端

前端也采用模块化开发,pkg_player 模块负责该功能的所有逻辑实现,另外它是一个可以独立运行的模块,这可以让它可以独立于 FlutterUnit 进行开发,开发阶段只需要运行 exsample 即可,可以让 AI 更聚焦于每个模块,减少其他信息干扰。当完成开发,进行组装到 FlutterUnit 即可。

这种可插拔的模块化,可以最大程度复用模块。比如未来我有一个 编程营地 的应用, 只需要引入pkg_player 模块,然后拼装一下, 编程营地就有了当前的三方库的展示和交流能力。


由于引入了 AI 编程,我希望像流水线一样,AI 可以根据我的代码组织结构,进行代码的产出。使用我设计了三层的 MVVM 应用架构,其中:

  • bloc 状态维护的视图模型层,负责维护数据流转。
  • repository 数据仓储层,负责实体类维护和数据获取,比如网络、数据库等。
  • view 视图层,基于视图模型中的数据,进行界面构建,以及用户交互事件的入口。

我约定一般情况下 view 和 repository 之间不直接依赖,另外 repository 中的代码需要支持 脱离视图层 也可以独立运行,这样便于单元测试。

前端的代码大概 80% 也是由 AI 完成的,但这并不代表开发者什么都不要干。我的角色是从敲代码的,变成了指挥 AI 敲代码的。如何设计整体的功能、交互的细节、数据的结果,还是需要花费心力的。

注: AI 的代码质量可以说中规中矩,还是有些需要优化的地方。良好的结构,可以让 AI 的洪水不至于肆意蔓延。约束它,引导它,受用于你。

希望模块化的开发结构,可以在 AI 的浪潮下,让你的 Flutter 应用更加内聚,符合单一职责原则、合成复用原则。目前正在根据实践经验,设计 fx 通用应用架构,敬请期待~


4. 关于国际化

为了便于包支持模块化,我写了一个 dart 脚本,可以分析统计模块中字符串,使用的非英文字符,及其在代码中的具体位置。

最后还会统计所有不同的字符串:

你可以把这些丢给 AI ,让它生成 arb 文件,然后根据中文,再得到英文翻译:

最终就会得到可用的资源:

这样在数据层面和本地资源,都支持了国际化:

英文 中文

4. 尾声

文章里就不说详细的代码实现了,FlutterUnit 是一个开源项目,大家可以自己去运行体验。最后,FlutterUnit3.4 版本, 三方库功能已经上线,大家可以在 github 上更新最新版的软件包体验,欢迎多多交流,为你喜欢的三方库打 call ~

更多文章和视频知识资讯,大家可以关注我的公众号、掘金和 B 站 。让我们一起成长,变得更强。我们下次再见~

相关推荐
乔冠宇1 小时前
CSS3中的新增属性总结
前端·javascript·css3
e***58231 小时前
Spring Cloud GateWay搭建
android·前端·后端
青衫码上行2 小时前
【Java Web学习 | 第15篇】jQuery(万字长文警告)
java·开发语言·前端·学习·jquery
x***13394 小时前
【MyBatisPlus】MyBatisPlus介绍与使用
android·前端·后端
n***54385 小时前
【MySQL】MySQL内置函数--日期函数字符串函数数学函数其他相关函数
android·mysql·adb
z***75157 小时前
【Springboot3+vue3】从零到一搭建Springboot3+vue3前后端分离项目之后端环境搭建
android·前端·后端
程序员陆业聪7 小时前
Android模拟器检测全面指南:从基础到高级策略
android
fruge8 小时前
仿写优秀组件:还原 Element Plus 的 Dialog 弹窗核心逻辑
前端
an86950018 小时前
vue新建项目
前端·javascript·vue.js