用途:在 Flutter 中集成平台特定代码,访问 Dart 无法提供的设备特性,或调用已有原生实现。
主要能力与概念:FFI(dart:ffi)直接绑定原生 C/C++;Platform Channel(MethodChannel、BasicMessageChannel)在 Dart 与 Kotlin/Java、Swift/Objective-C、C++ 间异步传消息;Pigeon 生成类型安全的 Channel;Platform View 把原生 UI 组件嵌入 Flutter 组件树;JS Interop 使用 package:web 与 dart:js_interop 访问 JavaScript 与 DOM。
FFI 用法:推荐用 flutter create --template=package_ffi <package_name> 创建,通过 build.dart 钩子编译原生代码;需要 Flutter Plugin API 或 Play Services 时用 flutter create --template=plugin_ffi <plugin_name>。C++ 符号需加 extern "C" 与可见性属性;Apple 平台动态库文件名在各架构与 SDK 间保持一致;用 package:ffigen 从 .h 生成绑定,配置在 ffigen.yaml。
Platform Channel 与 Pigeon:复杂或高频 API 优先用 package:pigeon,在独立 Dart 文件用 @HostApi() 定义协议并生成宿主与客户端代码。面向 Flutter 的通道方法须在主线程调用;后台线程需用 makeBackgroundTaskQueue();后台 Isolate 使用插件需 BackgroundIsolateBinaryMessenger.ensureInitialized(rootIsolateToken)。
Platform View:Android 可选 Hybrid Composition(PlatformViewLink + AndroidViewSurface,保真与可访问性好但可能降低渲染性能)或 Texture Layer(AndroidView,性能优先但快速滚动可能掉帧、SurfaceView 有问题);iOS 仅用 Hybrid Composition,实现 FlutterPlatformViewFactory 与 FlutterPlatformView,Dart 侧用 UiKitView,且 ShaderMask 与 ColorFiltered 无法作用于 iOS Platform View。
Web 与 Wasm:用 flutter build web --wasm 编译;多线程需服务器返回 Cross-Origin-Embedder-Policy: credentialless(或 require-corp)与 Cross-Origin-Opener-Policy: same-origin。新 Web 代码应使用 package:web 与 dart:js_interop,不要用 dart:html、dart:js、package:js;可用 HtmlElementView.fromTagName 嵌入 HTML 元素。iOS 浏览器暂不支持 WasmGC,Flutter 会自动回退到 JavaScript。
限制:以上为资料所述内容,具体版本兼容性与平台差异需自行验证;资料未提供收费、价格等信息。