首页 > 解决方案 > 颤振,在从颤振推送本机视图控制器后,这可能会再次在本机视图控制器上方显示更多内容吗?

问题描述

我有一个从框架实现的本机 viewController,我不能直接将其更改为颤动视图。

所以我想我可以:

  1. native ViewController在(第三方原生video player)中显示 UI flutter main app
  2. 然后我需要显示一些extra content(例如user avatar,一些text message等等)above/on native ViewController
  3. 但如果可能的话,我更愿意用 实现这个额外的内容flutter

这是好方法吗?如果没有,那么我认为必须做以下事情:

  1. native ViewController(a video player)在Flutter 主应用程序中显示 UI 。
  2. 然后显示一些extra content with native code

PS:为什么我不能把原生的 VideController 改成 flutter ?这是因为它与集成缓存逻辑的本机视频播放器集成,我无法更改其中的源代码。

标签: flutter

解决方案


根据 [1],拥有一些原生组件是很好的,因为在新的跨平台框架(如 Flutter)中并没有所有功能。

根据 [2],您可以使用 Container 中的装饰器来分层显示内容,假设您可以显示嵌入到 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 改回 Flutter?

[4] https://flutter.dev/docs/development/platform-integration/platform-channels


推荐阅读