FlutterUnit 3.3.0 | 全组件、全属性、鸿蒙支持来袭

FlutterUnit 已上架鸿蒙应用商店,有鸿蒙机器的朋友可以下载体验 ~ FlutterUnit 总算有了自己的一个小窝了

appgallery.huawei.com/app/detail?...

标题

1. FlutterUnit 3.3.0 功能一栏

FlutterUnit 已经对 Flutter3.35.1 进行了适配,期间主要是一些主题数据名称的变化,更新起来很顺利。

全组件收录

得益于 AI 的能力加持, 目前 FlutterUnit 已经收录了共 553 个可用组件,这是 Flutter3.29.4 版本的所有对外公开使用的组件数。 目前 FlutterUnit 已经有了一套完整收录流程:

解析 FlutterSDK 数据 -> 数据 json 化 -> 自动翻译 -> 收录入库 -> FlutterUnit 展示

另外 FlutterUnit 新版本对组件的条目就进行了较大的优化,将组件 Logo 区域的作用发挥到最大,组件详情页的右侧也展示了 Logo 信息。

主页的 Tab 左上角会展示当前家族的组件数量,大家可以更好地看到一共有多少个:

主页 详情页

桌面端也是同样:


全属性收录

组件条目上会展示当前组件一共有多少属性,点击时移动端会跳转到属性详情页,桌面端会弹出属性列表对话框。表情其中的数据支持中英文。

组件全属性 支持英文

这就是本次更新视觉表现上的两个重大突破,大家可以拉取最新代码体验,近两天会打包发布。


2. 聊聊 AI 在这个过程中的作用

首先是 FlutterSDK 解析的能力,一开始我是想让 AI 写个正则,来遍历 FlutterSDK 文件、匹配所有的组件和属性的。没想到它直接基于 analyzer 精准解析 Dart 类。这个过程在 《 Flutter 百题斩#15 | 列出 SDK 所有 StatelesWidget 组件》 中有所介绍。

通过 Dart 组件类的信息,就可以收集整理我希望得到的数据,然后统一输出发到 WidgetWithFields_3.35.json 中,如下所示:

然后让 AI 写个 Dart 脚本,将这个大 json 打散成之前 FlutterUnit 定义的数据格式。由于 FlutterSDK 只有英文,然后我让 AI 针对所有文件夹逐一执行翻译任务,得到了 desc_zh-CN 的简体中文:

之后是读取零散的 json 数据,将它们入库,这个工作也让 AI 重写了一下。界面如下,它最终会产出 FlutterUnit 需要的 flutter.db


3. 项目结构上的调整

由于组件的实例和整体项目相对独立,而且数据量很大,一旦写完改动不会太大。我将其单独封装了 unit_widgets_display 库,并且推到的 pub 上,直接给 widget_module 模块使用,这样可以减少 FlutterUnit 项目本身的项目结构压力:

另外 unit_widgets_display 库,任何人都可以提交组件的案例代码,这就将组件示例和 FlutterUnit 解耦 了。目前已经开源到 github, 对于还没有案例的组件,大家也可以在这个仓库里提交组件案例的 Demo 即可。后续同步工具会把你的案例收录到 FlutteUnit, 当然你也可以针对目前已有的案例提出优化的 PR ,给共建提供了可能性。

github.com/TolyFlutter...


在数据库层面,增加了 widget_fieldswidget_inheritace 两个表,分别记录组件的属性信息,以及组件的继承关系。 另外,新版把 Flutter 数据和文章数据分离开,有两个内置的数据库,更方便维护:


4. 对鸿蒙平台的支持

经历 半天 的适配, FlutterUnit 终于适配了鸿蒙平台,作为 Flutter 组件的全集录,这标志着 Flutter 在构建鸿蒙应用上的可行性。有了 RegExpo 正则通上架经验 , FlutterUnit 上架鸿蒙也轻轻松松。

鸿蒙版-主页 鸿蒙版-我的

目前鸿蒙只支持到 3.27.4 , FlutterUnit 已经支持了 Flutter 3.35.1 ,所以新拉了一个分支专门处理鸿蒙的适配,感兴趣的朋友可以看看相关改动。

其中最麻烦的是鸿蒙貌似不支持把 assets 中的数据库,拷贝到指定目录直接使用。 所以我只能把数据提取出来,在应用第一次启动时,批量插入数据。


5. 尾声

随着 AI 的加持,可以给想法快速落地的机会, FlutterUnit 之前的一些设想,也后续可以继续完善。FlutterUnit 一直走到今天,Start 数已经 8.6k 了,感谢大家的一路支持 ~

相关推荐
N***73851 小时前
Vue网络编程详解
前端·javascript·vue.js
e***71671 小时前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
程序猿小蒜1 小时前
基于springboot的的学生干部管理系统开发与设计
java·前端·spring boot·后端·spring
银空飞羽1 小时前
让Trae CN SOLO自主发挥,看看能做出一个什么样的项目
前端·人工智能·trae
Eshine、2 小时前
解决前端项目中,浏览器无法正常加载带.gz名称的文件
前端·vue3·.gz·.gz名称的js文件无法被加载
alexhilton3 小时前
深入理解withContext和launch的真正区别
android·kotlin·android jetpack
用户47949283569153 小时前
别再当 AI 的"人肉定位器"了:一个工具让 React 组件秒定位
前端·aigc·ai编程
WYiQIU4 小时前
面了一次字节前端岗,我才知道何为“造火箭”的极致!
前端·javascript·vue.js·react.js·面试
qq_316837754 小时前
uniapp 观察列表每个元素的曝光时间
前端·javascript·uni-app
小夏同学呀4 小时前
在 Vue 2 中实现 “点击下载条码 → 打开新窗口预览 → 自动唤起浏览器打印” 的功能
前端·javascript·vue.js