今天要聊的这位可以说是 Flutter 社区里的「大神级」插件了——flutter_rust_bridge!这个包在 Pub.dev 上星标数超高,还是官方的 Flutter Favorite 项目。GitHub ⭐ 5.2K,134+ 贡献者,CI 覆盖 Valgrind + ASAN/MSAN/LSAN 内存检测——这排面拉满了有没有!

而今天的主角 flutter_rust_bridge_ohos 就是它专为鸿蒙(OHOS)平台的适配版本,最新版本是 2.11.2(2026年3月发布)。由社区贡献者 star4277 同学完成了 OHOS 平台的支持,真正让 Flutter + Rust 在鸿蒙设备上跑起来了!🚀

如果你还不知道 Flutter + Rust 能擦出什么火花——简而言之:Flutter 做 UI,Rust 做性能敏感的业务逻辑,各自发挥自己最擅长的部分。
痛点
你可能会问:Flutter 写得好好的,为什么要引入 Rust?
来看看这些场景你有没有遇到过:
- 🤯 Flutter 做图片/视频处理,Dart 的性能就是不够,界面卡成 PPT
- 🤯 想用 opus、libsodium、crypto 这类 Rust/原生库,Dart 生态里压根没有替代品
- 🤯 项目里需要大量 JSON 解析、数据校验、加密解密,Dart 单线程搞不定
- 🤯 用
dart:ffi 手写 C 绑定简直生不如死——类型映射、内存管理、线程安全全要自己管 - 🤯 想在 Android/iOS/Linux/macOS/Windows 和鸿蒙之间共享高性能代码,不想写多份
而 flutter_rust_bridge 就是专门解决这些问题的——它让你用写普通 Dart 代码的方式调用 Rust 函数,自动生成所有胶水代码。现在 OHOS 也支持了,一套 Rust 代码跑遍全平台!🔥
核心特性
- ✅ Flutter Favorite 官方认证:Flutter 官方背书的第一批 7 个 Favorite 包之一
- ✅ 任意 Rust 类型:struct、enum、
Vec<T>、Option<T>、Result<T>、trait、闭包——自动映射到 Dart 原生类型 - ✅ 双向通信:Dart 调用 Rust 且 Rust 调用 Dart(回调函数)
- ✅ 四种模式:同步 Dart / 异步 Dart × 同步 Rust / 异步 Rust,任意组合
- ✅ Stream 支持:Rust 端的
StreamSink 自动映射为 Dart 的 Stream - ✅ 自动安全:内存安全由 Rust 编译器保证,无需手动管理 malloc/free
- ✅ OHOS 原生实现:基于 HarmonyOS NAPI + Rust FFI,性能无损
- ✅ 跨平台共享:一套 Rust 代码,Android/iOS/Linux/macOS/Windows/Web/OHOS 全平台运行
- ✅ SSE Codec:V2 新增超高吞吐编解码,某些场景快数倍
- ✅ 多 Codec 选择:支持 SSE / DartOptic 等多种编解码策略
快速上手
1. 安装命令行工具
cargo install flutter_rust_bridge_codegen
2. 创建项目
一行命令创建完整的 Flutter + Rust 项目模板:
flutter_rust_bridge_codegen create my_app
cd my_app && flutter run
3. 添加 OHOS 依赖
在 pubspec.yaml 中添加:
dependencies:
flutter_rust_bridge: ^2.11.0 # Dart 端运行时(通用)
flutter_rust_bridge_ohos: ^2.11.2 # OHOS 平台适配
4. 写 Rust 代码
在 rust/src/api/simple.rs 中定义你的 Rust API:
// rust/src/api/simple.rs
/// 一个简单的加法函数
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
/// 复杂的结构体——自动映射为 Dart class
pub struct GreetParams {
pub name: String,
pub age: u32,
}
/// 返回自定义类型
pub fn greet(params: GreetParams) -> String {
format!("你好,{}!你今年 {} 岁了", params.name, params.age)
}
5. 生成绑定
flutter_rust_bridge_codegen generate
6. 在 Dart 中调用
生成的代码就像调普通 Dart 函数一样自然:
import 'package:flutter_rust_bridge/flutter_rust_bridge.dart';
// 同步调用
final sum = await add(a: 1, b: 2);
print('1 + 2 = $sum'); // 输出: 1 + 2 = 3
// 调用带自定义类型的函数
final greeting = await greet(
params: GreetParams(name: '艾玛', age: 18),
);
print(greeting); // 输出: 你好,艾玛!你今年 18 岁了
实战:高性能图片哈希
来看一个更实用的例子——用 Rust 计算图片的感知哈希(pHash),这在 Dart 里做会很慢,但在 Rust 里就是小菜一碟:
Rust 端
use image::GenericImageView;
/// 计算图片的感知哈希(用于相似图片检测)
pub fn phash(image_data: Vec<u8>) -> Vec<u8> {
let img = image::load_from_memory(&image_data).unwrap();
let resized = img.resize_exact(8, 8, image::imageops::FilterType::Lanczos3);
let gray = resized.to_luma8();
// 计算 64 个像素的平均值
let mut total: u32 = 0;
let pixels: Vec<u8> = gray.pixels().map(|p| p.0[0]).collect();
for &p in &pixels {
total += p as u32;
}
let avg = (total / 64) as u8;
// 生成 64 位哈希(8 bytes)
let mut hash = Vec::with_capacity(8);
for i in 0..8 {
let mut byte: u8 = 0;
for j in 0..8 {
if pixels[i * 8 + j] >= avg {
byte |= 1 << (7 - j);
}
}
hash.push(byte);
}
hash
}
Dart 端调用
import 'dart:io';
import 'package:flutter_rust_bridge/flutter_rust_bridge.dart';
Future<void> compareImages(String path1, String path2) async {
final bytes1 = await File(path1).readAsBytes();
final bytes2 = await File(path2).readAsBytes();
final hash1 = await phash(imageData: bytes1);
final hash2 = await phash(imageData: bytes2);
// 计算汉明距离——用 Dart 做也没问题
int diff = 0;
for (int i = 0; i < 8; i++) {
int xor = hash1[i] ^ hash2[i];
diff += xor.bitCount(); // Dart 3.4+ 有 bitCount
}
print('图片相似度:${((1 - diff / 64) * 100).toStringAsFixed(1)}%');
}
💡 图片解码和缩放这些 CPU 密集操作全部在 Rust 中完成,不会阻塞 Flutter UI 线程。数据通过 Vec<u8> 自动映射为 Dart 的 Uint8List,零拷贝传输!
更骚的操作:Stream 流式处理
假设你想在 Rust 里处理一个耗时的计算任务,并且实时把进度推送到 Dart:
Rust 端
use flutter_rust_bridge::StreamSink;
/// 计算斐波那契数列,实时返回进度
pub fn fibonacci_stream(n: u32, sink: StreamSink<String>) {
let mut a: u64 = 0;
let mut b: u64 = 1;
for i in 0..n {
sink.add(format!("第 {} 步: {}", i + 1, b)).unwrap();
let temp = a + b;
a = b;
b = temp;
}
sink.add("计算完成!🎉".to_string()).unwrap();
}
Dart 端监听
// stream 自动映射为一个 Dart Stream
final stream = fibonacciStream(n: 10);
await for (final msg in stream) {
print(msg);
}
// 输出:
// 第 1 步: 1
// 第 2 步: 1
// 第 3 步: 2
// ...
// 第 10 步: 55
// 计算完成!🎉
Rust 调用 Dart(反向调用)
不只是 Dart 可以调 Rust,Rust 也能反过来调 Dart!这在 Rust 里需要「回调」的场景很有用:
Dart 端定义回调
// 定义一个 Dart 回调函数,传给 Rust
String myDartCallback(String name) {
return 'Hello from Dart, $name!';
}
// 传给 Rust 并调用
final result = await rustCallDart(callback: myDartCallback);
print(result);
Rust 端接收回调
pub fn rust_call_dart(callback: impl Fn(String) -> String) -> String {
let result = callback("艾玛".to_string());
format!("Rust 收到了 Dart 的回复: {}", result)
}
这个特性虽然在鸿蒙上用到的场景不多,但对于需要在 Rust 逻辑中间回调 UI 层做权限请求、弹窗确认等场景非常有用!
OHOS 实现原理
flutter_rust_bridge 在 OHOS 平台上的架构如下:
| 层级 |
说明 |
| Rust Layer |
你的业务逻辑代码,编译为 .so 动态库 |
| FFI Bridge |
flutter_rust_bridge_codegen 自动生成的 FFI 绑定代码 |
| OHOS NAPI |
HarmonyOS 的 Native API,加载和调用 Rust .so 库 |
| Dart FFI |
Dart 的 dart:ffi 调用 Rust 导出的 C ABI 函数 |
| Dart Layer |
flutter_rust_bridge Dart 运行时,负责类型转换和异步调度 |
关键点:在 OHOS 上,Rust 代码通过 rustc 交叉编译为 OHOS 原生的 .so(使用 aarch64-unknown-linux-ohos 或 x86_64-unknown-linux-ohos target),然后通过 HarmonyOS 的 NAPI 机制加载。flutter_rust_bridge_codegen 负责生成所有胶水代码——包括 C 头文件、Dart FFI 绑定、类型转换映射,开发者完全不需要碰任何 FFI 代码。
特别注意:目前在 OHOS 上需要手动配置 Rust 的交叉编译 target,具体可以参考 flutter_rust_bridge 文档中的 OHOS 集成指南。
环境要求
- Dart SDK >= 3.4.0 < 4.0.0
- 已初始化的 Flutter 鸿蒙项目(
ohos/ 目录结构) - Rust 交叉编译 target:
aarch64-unknown-linux-ohos / x86_64-unknown-linux-ohos
写在最后
讲真,flutter_rust_bridge 是我个人非常喜欢的一个项目——它不仅解决了实际问题,而且设计哲学很优雅:「你写正常的 Rust 代码,然后像正常的 Dart 代码一样调用它」。没有丑陋的 JSON 序列化,没有手写 FFI 绑定,一切都是自动化的。
在鸿蒙生态的加持下,flutter_rust_bridge_ohos 让 Flutter 开发者在鸿蒙设备上也能享受到 Rust 的高性能优势。无论你是要做音视频处理、加密解密、图像分析,还是 AI 推理,有了这套方案,你只需要写一份 Rust 代码,就能在所有平台上通用运行。
唯一的小遗憾是 OHOS 版目前还需要手动配置一些交叉编译的参数,不像 Android/iOS 那样开箱即用。但这是鸿蒙生态初期的正常现象,相信随着社区的发展会越来越完善。
仓库地址:
- 主项目:https://github.com/fzyzcjy/flutter_rust_bridge[1]
- OHOS 适配包:https://pub.dev/packages/flutter_rust_bridge_ohos[2]
觉得有用的话给主仓库点个 ⭐ Star 吧~我们下期见!🦊
由我编著的《鸿蒙Flutter开发实战》图书已上架京东图书等各大商店,内容涵盖基础知识、鸿蒙化原理及适配、混合开发、插件开发、高级特性优化、性能分析、三方库适配、开发实战、鸿蒙PC等等,基于 Flutter 3.35 版本,是不可多得的 Flutter鸿蒙化适配工具书和实战案例,欢迎大家选购 🎉🎉🎉 引用链接
[1]https://github.com/fzyzcjy/flutter_rust_bridge
[2]https://pub.dev/packages/flutter_rust_bridge_ohos