Flutter简介,及鸿蒙版 Flutter简介

举报
yd_232225224 发表于 2026/08/31 16:25:07 2026/08/31
【摘要】 做移动端开发时,我们经常会遇到一个问题:Android 要写一套代码,iOS 又要写一套代码。如果还需要支持其他平台,维护成本就会越来越高。Flutter 就是为了解决这类问题而出现的一套跨平台 UI 开发框架。 Flutter 是什么?Flutter 是 Google 推出的开源跨平台开发框架,主要使用 Dart 语言开发。它最大的特点就是:一套代码可以运行在多个平台上。目前官方 Flut...

做移动端开发时,我们经常会遇到一个问题:Android 要写一套代码,iOS 又要写一套代码。如果还需要支持其他平台,维护成本就会越来越高。

Flutter 就是为了解决这类问题而出现的一套跨平台 UI 开发框架。

Flutter 是什么?

Flutter 是 Google 推出的开源跨平台开发框架,主要使用 Dart 语言开发。

它最大的特点就是:一套代码可以运行在多个平台上。

目前官方 Flutter 可以开发 Android、iOS、Web、Windows、macOS 和 Linux 应用。开发者主要编写 Dart 和 Flutter 代码,再由 Flutter 针对不同平台进行编译和适配。

比如一个简单的 Flutter 页面可能是这样的:

import 'package:flutter/material.dart';

void main() {
  runApp(
    const MaterialApp(
      home: Scaffold(
        body: Center(
          child: Text("Hello Flutter"),
        ),
      ),
    ),
  );
}

这段代码并没有写 Android 的 Kotlin,也没有写 iOS 的 Swift,但同样可以在 Android 和 iOS 上显示一个页面。

这也是 Flutter 最吸引人的地方:大部分 UI 和业务逻辑只需要维护一份。

Flutter 为什么能够跨平台?

Flutter 并不是简单地把 Android 控件换成 iOS 控件。

它有自己的一套 Widget 和渲染体系。

例如我们经常使用的:

Text()
Container()
Row()
Column()
ListView()

这些都是 Flutter 自己提供的组件。

程序运行以后,大致可以理解成:

Dart 代码
   ↓
Flutter Framework
   ↓
Flutter Engine
   ↓
Android / iOS / Windows / macOS ...

Flutter Engine 负责渲染、文字排版、事件处理等底层工作,而不同平台还会有对应的 Platform Embedder,用于让 Flutter Engine 和操作系统结合起来。

所以 Flutter 可以在不同系统上尽量保持一致的界面效果。

另外 Flutter 还有一个很受欢迎的功能——Hot Reload(热重载)

修改代码之后,不需要每次重新启动整个 App,就能很快看到界面变化,因此开发 UI 时效率很高。

那“鸿蒙版 Flutter”是什么?

这里很容易产生一个误解。

所谓的“鸿蒙版 Flutter”,并不是说 Google 官方 Flutter 已经把 HarmonyOS 加进了官方支持平台。

截至 2026 年,Flutter 官方支持的平台列表仍然主要是 Android、iOS、Web、Windows、macOS 和 Linux,并没有把 HarmonyOS / OpenHarmony 列为官方 Flutter 支持平台。

目前我们平时说的“鸿蒙 Flutter”,主要指 OpenHarmony 社区针对 Flutter 做的适配版本

OpenHarmony-SIG 维护了类似:

flutter_flutter
flutter_engine
flutter_packages

这样的项目。

其中 flutter_flutter 是在官方 Flutter SDK 基础上增加 OpenHarmony 支持,而 flutter_engine 则是在 Flutter Engine 基础上加入 OpenHarmony 平台相关的适配。

简单理解就是:

官方 Flutter
    ↓
Android / iOS / Windows ...

而鸿蒙版 Flutter 相当于:

官方 Flutter
    ↓
OpenHarmony 社区进行适配
    ↓
OHOS Flutter SDK
    ↓
HarmonyOS / OpenHarmony

也就是说,Flutter 本身的开发模式并没有完全改变,开发者依然可以写:

Text("Hello HarmonyOS")

依然使用 Dart,依然使用 Flutter 的 Widget。

主要变化发生在 Flutter SDK、Engine、构建工具以及系统接口适配这一层。

开发鸿蒙 Flutter 有什么不同?

普通 Flutter 创建项目时可能会指定 Android、iOS 等平台。

鸿蒙适配版本增加了 ohos 平台,例如:

flutter create --platforms ohos hello_flutter

编译时还可以生成鸿蒙应用使用的 HAP:

flutter build hap

OpenHarmony-SIG 的 Flutter SDK 已经提供了相关的 Flutter Tools 支持。

项目结构大概也会变成:

hello_flutter/
├── lib/
│   └── main.dart
├── android/
├── ios/
└── ohos/

其中:

lib/

依然主要放我们的 Dart 和 Flutter 业务代码。

而:

ohos/

则负责鸿蒙平台相关的工程配置、权限、签名以及原生代码。

最大的问题其实是插件

如果只是写普通 Flutter UI,那么迁移到鸿蒙 Flutter 通常比较容易。

真正麻烦的地方往往是第三方插件

比如:

dio
provider
bloc
get

这类主要由 Dart 实现的库,因为并不严重依赖 Android 或 iOS 系统接口,通常比较容易继续使用。

但是像:

camera
webview
定位
蓝牙
扫码
文件选择
通知
地图

这些插件往往需要调用操作系统提供的能力。

例如一个 Flutter 相机插件,传统版本底层可能只有:

Flutter
   ↓
Android Camera API

和:

Flutter
   ↓
iOS AVFoundation

到了鸿蒙就需要额外实现:

Flutter
   ↓
HarmonyOS Camera API

所以很多 Flutter 项目迁移鸿蒙时,最大的工作并不是修改 Dart 页面,而是检查自己使用的插件有没有鸿蒙版本。实际迁移案例中也通常会把纯 Dart 插件直接复用,而对依赖系统底层能力的插件进行鸿蒙适配。

Flutter 和 ArkUI 有什么区别?

如果是纯鸿蒙应用开发,通常还会听到 ArkTS 和 ArkUI。

可以简单理解为:

ArkTS + ArkUI
→ 鸿蒙原生开发

而:

Dart + Flutter
→ 跨平台开发

如果一个项目只准备做 HarmonyOS,那么直接使用 ArkTS 和 ArkUI,通常能获得更直接的系统 API 支持。

但如果一个项目本来就有 Android 和 iOS 的 Flutter 版本,现在又需要增加鸿蒙版本,那么鸿蒙 Flutter 就很有吸引力。

因为理想情况下:

             ┌→ Android
             │
一套 Flutter ├→ iOS
             │
             └→ HarmonyOS

大量页面、网络请求、数据处理和业务逻辑都可以继续复用。

总结

Flutter 的核心思想其实非常简单:

使用 Dart 和一套 Flutter UI 代码,尽可能运行在多个平台上。

而所谓的鸿蒙版 Flutter,本质上是在 Flutter 原有架构上增加了对 OpenHarmony / HarmonyOS 平台的适配。

它并不是一种全新的开发框架,也不是把 Flutter 改成 ArkTS,而是希望让原来的 Flutter 开发方式继续工作:

Dart
+
Flutter Widget
+
Flutter Engine
+
鸿蒙平台适配

对于已经使用 Flutter 的项目来说,这意味着在增加鸿蒙版本时,有机会继续复用原来的 UI 和业务代码。

当然,目前鸿蒙 Flutter 的生态完善程度还不能简单等同于 Android 和 iOS,尤其是涉及相机、地图、蓝牙、WebView 等平台插件时,仍然需要重点确认兼容情况。

但从跨平台开发的角度来看,Flutter 能够继续扩展到鸿蒙平台,本身就是一个相当值得关注的方向。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。