Flutter 是 Google 推出的开源跨平台 UI 框架,使用 Dart 语言,可以用一套代码构建 iOS、Android、Web、Windows、macOS、Linux 应用,并正在向嵌入式、车机、Tizen 和鸿蒙生态扩展。
核心定位
Flutter 和 React Native 的最大区别在于:它不是把原生控件包一层,而是通过自己的渲染引擎把 UI 自己画出来。这样不同平台上的界面表现会更一致,动画、自定义 UI、品牌化设计也更容易做。
架构与渲染
Flutter 应用通常由三层组成:
- Framework:Dart 写的 Widget 系统、动画、手势、布局等。
- Engine:C++ 实现的渲染引擎、文本排版、Dart 运行时和平台通道。
- Embedder:负责把 Flutter 嵌入到 iOS、Android、Web、桌面等系统中。
渲染引擎方面,Flutter 正在从 Skia 迁移到 Impeller。Impeller 在构建期预编译着色器,能明显减少首次滚动、动画时的卡顿。到 2026 年,Impeller 已在 iOS 和 Android 上成为默认渲染后端,Android 端也在逐步移除旧 Skia 后端。
多端能力
Flutter 目前主要覆盖:
- 移动端:iOS、Android,生产成熟度最高。
- Web 端:正在将 WebAssembly 设为默认构建目标,性能接近原生体验;Web 端有状态热重载也已默认开启。
- 桌面端:Windows、macOS、Linux 已支持,多窗口能力仍在推进中。
- 嵌入式/电视:车机、工业屏、Tizen 电视等场景已有落地。
- 鸿蒙:官方并未直接提供鸿蒙适配,但社区已有 Flutter OpenHarmony 方案,可用于迁移验证。
开发体验
Flutter 开发时运行在 Dart VM 上,支持 热重载,改 UI、改状态后几乎可以立即看到效果。发布时会 AOT 编译成机器码,所以启动速度和运行性能都比较接近原生应用。
近年还新增了一些实用能力:
- Widget Previews:可以单独预览某个 Widget,不用每次都跑完整应用。
- Dart/Flutter MCP Server:让 AI 编码助手更安全地理解项目上下文,辅助修复溢出、生成样板代码、检查依赖。
- Material 3 / Cupertino 更新:组件更现代化,部分设计库正逐步解耦为独立包。
2026 年的演进方向
Flutter 正在从“跨平台 UI 框架”往更完整的生态发展:
- GenUI:探索让 AI 动态生成 UI,适配不同用户意图。
- 全栈 Dart:推进 Dart 在后端、云函数、AI 工具链中的能力。
- Wasm 默认化:提升 Web 端性能和启动体验。
- 桌面多窗口:Windows、macOS 已打下基础,Linux 仍在推进。
适合谁
Flutter 适合这些场景:
- 需要 iOS、Android、Web、桌面端 UI 高度一致。
- 产品有较强品牌化、动画、自定义界面需求。
- 团队愿意接受 Dart 语言,并希望减少多端重复开发。
- 想做独立应用、工具类应用、内容型应用或跨端原型。
需要注意
- Dart 需要额外学习,前端团队迁移成本比 React Native 高。
- 包体积通常比纯原生应用大一些。
- Web 端适合管理后台、内部工具、轻交互页面,但 SEO 和首屏不是它的强项。
- 鸿蒙支持仍主要依赖社区方案,不能等同于官方原生支持。
- 复杂原生能力,如推送、蓝牙、相机深度控制,仍然需要写平台插件。