为什么video_playerandroid 和 iOS 代码不联合?
这只是一个历史文物还是 ios 和 android 包仍然需要成为主插件的一部分?
它似乎是:
- 方便:将使用
flutter createandroid/ios 样板轻松创建包
- 历史文物:他们可能在联合插件发布之前创建了包。(这就是为什么人们要求颤振创建插件模板自动生成一个联合插件)。
正确的包结构
如果可以将它们分开,那么正确的包结构是什么?
它们可以分离出来。
具体来说,对于 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