You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将带原生实现的Flutter插件作为Deferred Component导入项目?

可行解决方案

方法1:调整本地包引用与延迟组件配置

  • 在主项目的pubspec.yaml中,以本地路径引用自制插件:
dependencies:
  my_package:
    path: ./my_package
  • 同样在主项目pubspec.yaml里,直接将插件库纳入延迟组件配置:
flutter:
  deferred_components:
    - name: my_feature
      libraries:
        - package:my_package/main.dart
  • 确保插件的pubspec.yaml正确声明依赖与导出逻辑,比如:
dependencies:
  flutter:
    sdk: flutter
  • 在主项目中通过延迟加载调用插件功能:
Future<void> loadMyFeature() async {
  final myPackage = await import('package:my_package/main.dart');
  myPackage.runFeature();
}

方法2:迁移插件代码到主项目延迟目录

如果方法1不生效,可将my_package的核心代码迁移到主项目lib下的子目录(比如lib/deferred_features/my_package),再配置该目录为延迟组件:

flutter:
  deferred_components:
    - name: my_feature
      libraries:
        - package:main_project/deferred_features/my_package/main.dart

这种方式完全适配Flutter对延迟组件的路径要求,同时能保留原插件的代码结构。

方法3:结合Android动态特性拆分

若插件包含原生代码,可结合Android Play Feature Delivery实现双层动态加载:

  • 在Android项目中创建动态Feature模块,将插件的原生代码(Java/Kotlin)迁移至该模块。
  • Flutter层仍通过延迟加载调用插件Dart代码,触发功能时先请求下载Android动态模块,再加载对应Dart逻辑,进一步压缩初始APK体积。

内容的提问来源于stack exchange,提问作者Waruna Kaushalya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:45:46