用途:构建 Flutter 插件,为其他应用提供原生互操作能力,适合创建桥接 Flutter 与平台特定代码的可复用包。
主要能力:涵盖插件架构与设计模式、创建新插件、实现 Android 平台代码、实现 Windows 平台代码、为现有插件添加平台支持,并提供示例。
架构与设计:联邦插件将 API 拆分到多个包,分为面向应用的接口包、平台接口包和平台实现包(如 my_plugin_android、my_plugin_windows)。标准插件(--template=plugin)通过 Method Channels 访问平台特定 API;FFI 插件(--template=plugin_ffi)用于访问 C/C++ 原生库、在 Android 配置 Google Play 服务或在 iOS/macOS 使用静态链接。限制:FFI 插件包支持打包原生代码和方法通道注册代码,但不支持方法通道本身;若同时需要方法通道和 FFI,应使用标准非 FFI 插件模板。
创建新插件:先判断需要 FFI 还是标准 Method Channels,再执行对应命令并验证目录结构。标准插件命令:flutter create --template=plugin --platforms=android,ios,web,linux,macos,windows --org com.example.organization -i objc -a java my_plugin。FFI 插件命令:flutter create --template=plugin_ffi my_ffi_plugin。
Android 平台代码:用 Android Studio 编辑。先构建生成 Gradle 文件:cd example 后 flutter build apk --config-only;打开 example/android/build.gradle 或 .kts;实现 FlutterPlugin 接口,类需有公共构造函数;将旧 registerWith() 与新 onAttachedToEngine() 的共享初始化逻辑提取为私有方法;需要 Activity 引用时实现 ActivityAware 并处理相关回调,后台 Service 则实现 ServiceAware;示例应用 MainActivity 需继承 v2 嵌入的 FlutterActivity;为所有非重写公共成员编写文档。
Windows 平台代码:用 Visual Studio 编辑。先 cd example 后 flutter build windows 生成解决方案;打开 example/build/windows/hello_example.sln;在 hello_plugin/Source Files 与 Header Files 中实现 C++ 逻辑;修改后必须重新构建解决方案再运行应用,否则会使用过时的插件二进制。
为现有插件添加平台:在插件根目录运行 flutter create --template=plugin --platforms=web,macos .;若添加 iOS 或 macOS 支持,需配置生成的 .podspec 文件中的依赖与部署目标,再实现平台特定代码。
适用场景:需要将 Flutter 与平台特定 API 或 C/C++ 原生库桥接、构建可复用插件包、或为已有插件扩展平台支持时。
限制:资料未提供收费、价格、平台支持范围之外的效果或使用步骤等额外信息。