教程:Pure Dart

注意: 如果你想了解每一条具体命令, CI workflow 中的 valgrind_test 部分也是有用的。

和之前的教程不一样,这个教程里 Rust 只和 Dart 本身集成,没有 Flutter.

拿到示例代码

下载 Dart, 下载 Rust,并熟悉一下。接着运行 git clone https://github.com/fzyzcjy/flutter_rust_bridge, 例子在 frb_example/pure_dart.

(可选) 手动运行代码生成

注意:代码会在运行完 cargo build 后,通过 build.rs 里的构建脚本自动生成。所以这一步是可选的。即使你再次运行,代码也不会发生什么改变。

安装代码生成器:cargo install flutter_rust_bridge_codegen.

运行: flutter_rust_bridge_codegen --rust-input frb_example/pure_dart/rust/src/api.rs --dart-output frb_example/pure_dart/dart/lib/bridge_generated.dart (你可以将 CI workflow 最为查阅手册.) (对 Windows 用户,你可能需要在路径里用 \\ 代替 /.)

Run "Dart+Rust" app

你可以将 frb_example/pure_dart/dart/lib/main.dart 作为一个普通的 Dart 程序运行,唯一不同的是,你需要提供 Rust 的动态连接库 (简单起见,这里我只演示动态链接库的方法,但你当然可以使用其他方法)详细步骤如下。

frb_example/pure_dart/rust 目录下运行 cargo build 将 Rust 代码编译为 .so 文件。接着执行 dart frb_example/pure_dart/dart/lib/main.dart frb_example/pure_dart/rust/target/debug/libflutter_rust_bridge_example.so 去运行 Dart 程序。

(如果你的运行出现问题,请看 "Troubleshooting" 部分) (如果你的平台是 MacOS, Rust 应该会生成.dylib, 请把命令里的 ...dylib 替换为 ...so)

P.S. 这个例子里并没有 UI 或其他功能,你只能看到一些测试通过的信息。