Flutter联邦插件编写咨询:各包内容及正确创建方法
Flutter联邦插件核心包职责说明
1. app_facing_package(面向应用的包)
- 这是应用开发者直接依赖的包,对外暴露所有业务API,开发者无需关心底层平台实现细节
- 内部仅做逻辑转发:调用
platform_interface_package定义的统一接口,不包含任何平台原生代码 - 举例:
url_launcher的launchUrl()方法就定义在这里,内部只是把调用转给对应的平台接口实现
2. platform_interface_package(平台接口包)
- 定义跨平台的统一接口规范,所有平台实现都必须遵循这套标准
- 核心是抽象类(比如
UrlLauncherPlatform),里面声明业务所需的所有抽象方法 - 还包含跨平台共用的枚举、数据模型,以及可选的默认实现(比如Web端的通用处理逻辑)
- 这个包完全独立,不依赖任何平台代码或具体实现包
3. platform_package(平台实现包)
- 针对特定平台(Android/iOS/Linux/macOS/Windows等)的原生实现包,每个平台对应一个独立包(比如
url_launcher_android、url_launcher_ios) - 核心工作是实现
platform_interface_package中的抽象类,编写对应平台的原生代码(Kotlin/Java/Swift/C++等)完成具体功能 - 这些包会被
app_facing_package间接依赖,或由开发者按需单独引入(比如仅引入Android平台实现)
创建联邦插件的实操提示
官方flutter create命令默认生成普通插件,要搭建联邦插件结构可以手动拆分:
- 先创建
app_facing_package和platform_interface_package,先把统一接口定义清楚 - 为每个目标平台单独创建
platform_package,实现对应接口的原生逻辑 - 在
app_facing_package中添加对platform_interface_package的依赖,通过接口调用完成跨平台逻辑分发
内容的提问来源于stack exchange,提问作者Aryaveer Chaudhary
相关产品推荐
相关产品推荐

