在之前的 《Flutter 2026 Roadmap》我们就聊到,如今一个项目要有发展前景,就必须能够和 AI 持续贴一起,而显然 Flutter 做到了,除了之前的 Flutter MCP ,GenUI 等 AI 相关支持产物,现在官方又新增了 flutter/skills 支持,用于补全 Flutter 在 AI 编程缺乏官方 skills 的短板。
flutter/skills 作为给 AI Agent(Agent / Copilot / Claude / Cursor 等)用的技能库,核心目标是让 AI 在 Flutter 项目里,面对执行复杂开发流程时,AI 有相应的规范和指导流程 :
- 决策逻辑:告诉 AI 什么时候该选哪种方案
- 详细指令:包含具体的代码实现和步骤
- 严格约束:防止 AI 生成错误或过时的代码(如禁止使用已废弃的 API)
当然,这些 skills 所需的数据,其实都来自项目里的 Skills CLI ,Skills CLI 会调用 Gemini,把官方的 Flutter 文档“压缩成可执行的 SKILL.md” ,也就是它会 crawl 文档网站找页面,然后用 Gemini 转成结构化 SKILL.md,对此 CLI 的主要有两个核心命令:
generate-skill:从 YAML 生成(支持--skill只生成某一个;支持--directory输出到指定目录)validate-skill:重新生成并和已有 skills 比对,用来做一致性/回归验证(还支持--thinking-budget)
具体流程为:
- 通过
resources/flutter_skills.yaml指定技能名称、描述以及原始文档的资源链接(HTTPS 或本地文件)
ResourceFetcherService抓取网页内容,并由MarkdownConverter将 HTML 转换为干净的 Markdown 格式,去除导航栏、页脚等噪点
- 调用 Gemini 接口,向 AI 发送原始文档、技能模版指令(
skill_instructions.dart)和特定提示词(Prompts.dart),要求 AI 生成符合规范的技能文档 - 生成的
SKILL.md包含统一的 H1 标题、## Goal(目标)、## Instructions(指令)和 ## Constraints(约束)和代码片段 - 提供
validate-skill命令,让 AI 重新审视已生成的技能,根据准确性、结构和完整性进行打分(0-100分),确保输出质量
而在目前的项目,主要覆盖有 20 多个不同技能:
| 类别 | 技能 | 能力 |
|---|---|---|
| 基础环境 | linux/macos/windows-setup | 配置三端的 Flutter 开发环境及工具链 |
| 核心架构 | flutter-architecture | 实现 clean Flutter 脚手架和单一数据源架构 |
| 状态与数据 | flutter-state-management | 处理全局与局部状态,实施单向数据流 |
flutter-databases | 基于 sqflite 的持久化存储实现 | |
flutter-caching | 内存、文件系统、图像等多层缓存策略 | |
| UI 与 布局 | flutter-layout | 约束系统、响应式与自适应布局 |
flutter-animation | 实现隐式、显式、物理及 hero 动画 | |
flutter-theming | Material 3 主题适配、按钮迁移与平台常用设计 | |
| 网络与并发 | flutter-http-and-json | 处理异步网络请求与结构化 JSON 序列化 |
flutter-concurrency | 使用 Isolates 处理后台任务(如大数据解析) | |
| 原生集成 | flutter-native-interop | FFI 调用 C/C++、平台通道(MethodChannel)通信 |
flutter-platform-views | 在 Flutter 中嵌入原生 Android/iOS 视图 | |
flutter-plugins | 跨平台插件及嵌入生命周期管理 | |
| 功能特性 | flutter-navigation | 路由跳转、动态参数传递与深层链接处理 |
flutter-localization | 多语言支持 | |
flutter-accessibility | 辅助技术支持、语义化标签与无障碍测试 | |
| 优化与测试 | flutter-performance | 识别渲染抖动、优化 UI 线程与 Raster 线程性能 |
flutter-app-size | 测量并缩减安装包体积(分析构建产物) | |
flutter-testing | 单元测试、组件测试与集成测试 |
这些技能在 AI Coding 的时候,可以很好帮助 AI 完成项目管理和迭代,比如 flutter-plugins 里:
- 会明确包含哪些修改
build.gradle或Info.plist的具体步骤 - 是使用
ffi还是 Method Channels - 是不是需要使用 Package-Separated Federated Plugin
这对于 AI 在决策和实现 Flutter Plugin 代码生成的规范和成功率都有明显提升,同样的,对于 flutter-architecture ,可以让 AI 在写代码是遵循「Clean Architecture」 ,让 AI 输出单向数据流 + 严格分层(UI/Domain/Data)+ 职责隔离的架构,例如:
- 分层约束:UI / Data /Domain 的职责边界
- 数据源拆分:Remote Service vs Local Service 的建模方式
- Service 纯封装:Service 必须无状态、无业务逻辑
- Repository 单一可信源:只有 Repository 能 mutate 数据
- 错误显式化:Repository 捕获异常并返回
Result Ok/Error - 可观察数据流:Repository 可通过 Stream 对外暴露变化
- 状态管理:
ChangeNotifier持有 UI state、集中处理交互 - Command 模式:用
Command0封装异步动作/交互入口,避免 View 直接写 async 逻辑 - View 零业务逻辑:View 只能布局/简单条件渲染/路由,不做数据变更
- 单向数据流校验规则:Repository → ViewModel → View(数据下行),View → ViewModel → Repository(事件上行),并提供“Validate and Fix”的修复策略
另外 flutter-performance 也很实用,它把性能优化定义成三类问题,并且以 16ms 帧预算为基准来判断 jank:
- UI thread(Dart / build 阶段)卡顿
- Raster thread(GPU / paint 阶段)卡顿
- Web 端 profiling 的特殊路径
flutter-performance 的决策逻辑是:
-
要不要先做 baseline?
- 要:写 integration test,用
traceAction+TimelineSummary
- 要:写 integration test,用
-
是否 Web?
- Web:开 profiling flags + Chrome DevTools Performance
- 非 Web:真机
--profile+ Flutter DevTools
-
看 DevTools 里哪条线程红(>16ms):
- UI:优化 build / setState 颗粒度 / const / StringBuffer
- Raster:减少 saveLayer/Opacity/Clip/ImageFilter,等等
- 两边都红:先 UI 再 Raster(因为 Dart 端过慢会连锁影响渲染)
同时,它也提供了一些优化建议给 AI ,例如:
-
UI Thread(Build 成本)
- “localize setState” —— 把状态下沉,缩小重建范围
- “use const” —— 减少重建遍历
- “循环里字符串拼接用 StringBuffer”
-
Raster Thread(绘制成本)
- 避免
Clip.antiAliasWithSaveLayer
- 少用
saveLayer、ImageFilter
- 避免
-
Layout / Intrinsics
ListView.builder/GridView.builder
- 避免不必要的
shrinkWrap: true
可以看到,这些技能也许你不用 flutter/skills ,大模型也可能会做,但是有了 flutter/skills 之后,就可以让 AI 明确实施的方案,让 AI 看起来更像一个专业的 Flutter 高级开发工程师。
同时, flutter/skills 也是大大降低了开发者使用 AI 辅助开发的门槛,它将原本散落在各处的静态知识库,提炼成了 AI 代理可以直接理解并执行的“标准操作”,这也是 AI 时代的必经之路。