用途:在 Flutter 应用中与底层原生平台(Android/iOS)直接通信,建立可维护且类型安全的互操作标准。
主要能力:
- MethodChannel(一次性请求):用于 Dart 与原生之间的标准请求-响应模式。应使用唯一的域名风格通道名,并始终用 try-catch 捕获 PlatformException。示例:static const _channel = MethodChannel('com.example.app/device_info'); 调用时通过 invokeMethod 获取结果,异常时记录日志并返回 null。
- EventChannel(流):用于持续数据流,如传感器数据、网络连接状态。原生侧必须处理 onListen 与 onCancel;Dart 侧必须释放订阅以防泄漏。
- Pigeon 类型安全:复杂 API 避免手写字符串键,使用 Pigeon 生成类型安全接口。
- 目录结构:尽量将原生代码组织在相关功能内,或为共享逻辑使用专门的 plugins/ 目录。
- Swift Package Manager(SPM)默认:Flutter 3.44 引入,iOS/macOS 原生集成默认使用 SPM,新配置完全取代 CocoaPods。可在插件 pubspec.yaml 中用 swift_packages 字段声明 Swift 包,或通过 Xcode 工作区配置。
- Platform View 重构:Flutter 3.44 引入,嵌入式原生视图(地图、WebView、相机等)使用重构后的混合合成渲染管线,减少掉帧并消除 UI 合成性能问题。
- 联邦插件:若逻辑可在多个应用间复用,拆分为 _platform_interface、_android、_ios、_web 包,并提供单一入口。
使用方式:按上述模式在 Dart 与原生侧分别实现通道或 Pigeon 接口,注意异常处理与资源释放。
适用场景:需要访问原生设备信息、传感器、连接状态,或构建可复用原生插件时。
限制:资料未提供具体安装命令、版本兼容细节及完整代码示例,部分内容需参考对应子技能文档。