检查一下你的 lib/bridge_generated.dart
,你会发现 Platform
的定义变为了:
@freezed
class Platform with _$Platform {
const factory Platform.unknown() = Unknown;
const factory Platform.android() = Android;
const factory Platforn.ios() = Ios;
const factory Platform.windows() = Windows;
const factory Platform.unix() = Unix;
const factory Platform.macOs(
String field0,
) = MacOs;
const factory Platform.wasm() = Wasm;
}
它不再是一个普通的枚举,而是带着一个具有变体的枚举类!现在代码不能通过编译,因为我们还缺少 freezed
库。freezed
库也是一个代码生成库,和我们目前为止遇到的有些相似,但是它生成的更多是 Dart 代码。所有的这些库都是在调用 build_runner
时进行代码生成的,即执行 flutter pub run build_runner build
时。
不管怎么说,为了使这段代码通过编译,我们需要做一些修改:
- 执行下面的代码,添加最新的
freezed
依赖:
flutter pub add -d build_runner
flutter pub add -d freezed
flutter pub add freezed_annotation
- 更新
justfile
文件,在 Rust 代码生成后运行build_runner
:
gen:
..
# Uncomment this line to invoke build_runner as well
- # flutter pub run build_runner build
+ flutter pub run build_runner build
现在调用 just
会同时生成 Rust 绑定和 Dart 代码。