我有一个从框架实现的本机视图控制器,我不能直接将其更改为颤振视图。
所以我想我可以:
- 在
flutter main app
的native ViewController
(第三方本机video player
(中显示 UI。 - 然后我需要显示一些
extra content
(例如user avatar
,一些text message
等(above/on native ViewController
- 但是如果可能的话,我更喜欢用
flutter
来实现这些额外的内容?
这是好方法吗?如果没有,那么我认为必须做以下事情:
- 从颤振主应用程序以
native ViewController(a video player)
显示 UI。 - 然后显示一些
extra content with native code
。
PS:为什么我不能将本机VideController更改为颤振? 这是因为它与本机视频播放器集成,集成了缓存逻辑,而我无法更改其中的源代码。
根据 [1] 的说法,有一些原生组件是可以的,因为在新的跨平台框架(如 Flutter(中并没有所有功能。
根据 [2],您可以使用容器中的装饰器分层显示内容,假设您可以显示嵌入到 Flutter 代码中的本机内容。在这种情况下,一定要使用方法 1。
但是,我只能从 Flutter 文档 [4] 中找到平台通道类型的解决方案来执行本机代码,例如它指出:
为了符合频道的 UI 线程要求,您可能需要从后台线程跳转到Android 的 UI 线程才能执行频道方法。
在平台频道的其他帖子 [3] 中:
当用户单击返回时,我想导航回颤振 [..]
两者都意味着所有本机内容都发生在本机线程和视图中,因此除了您的第二种方法之外,我认为除了所有内容都是本机方法之外,没有其他可能性。
因此,这一切都取决于您如何将本机元素适合 Flutter。如果您嵌入,请使用 Flutter 进行叠加,否则执行所有本机操作。我认为衡量这一点的好方法是,如果您在本机查看器中看到 Flutter 生成的代码中的任何内容,您就有机会覆盖,否则只需转到本机。
[1] 在 Flutter 中打开本机 UIViewController
[2] https://cogitas.net/overlay-text-icon-image-flutter/
[3] 如何将根视图控制器从本机 iOS 改回
颤振?[4] https://flutter.dev/docs/development/platform-integration/platform-channels