【问题标题】:Using dart pigeon in a federated model在联合模型中使用飞镖鸽
【发布时间】:2020-09-24 00:28:34
【问题描述】:
【问题讨论】:
标签:
dart
plugins
federated-learning
【解决方案2】:
为什么video_player的android和iOS代码没有联合?
这只是一个历史文物还是 ios 和 android 包仍然需要成为主插件的一部分?
它似乎是:
-
方便:
flutter create 将使用 android/ios 样板轻松创建包
-
历史文物:他们可能在联合插件发布之前创建了包。 (这就是人们要求 Flutter 创建插件模板自动生成联合插件的原因。
正确的包结构
如果可以将它们分开,那么正确的包结构是什么?
它们可以分开。
具体来说,对于 pigeon,您可以将 Dart 生成的代码(来自 Pigeon)放在您的平台特定界面中,并将您的 Native 平台生成的代码(来自 Pigeon)放在您的平台特定包中。
在您的平台特定包中,您应该将其声明为联合插件(参见docs 和url_launcher),其中url_launcher 是该示例中面向应用的包:
flutter:
plugin:
implements: url_launcher
platforms:
macos:
pluginClass: UrlLauncherPlugin
fileName: url_launcher_macos.dart
示例包
如果你看看url_launcher,所有平台都有联合插件包。
为什么要联合
创建单独的平台特定包的优点是用户可以覆盖默认实现。对于 video_player,用户无法覆盖 Android 或 iOS 实现,因为它位于面向应用的包中。
更多阅读
在写完上面的内容后,我发现了这个 GitHub 问题,它解决了我们很多问题:https://github.com/woodemi/quick_flutter.brick/issues/22