【问题标题】:flutter, after push a native viewController from flutter, is this possible display more content above native viewController with flutter again?颤振,在从颤振推送本机视图控制器后,这是否可能再次在本机视图控制器上方显示更多内容?
【发布时间】:2020-04-01 13:31:49
【问题描述】:

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

所以我认为我可以:

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

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

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

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

【问题讨论】:

  • 原生 ViewController 中的“原生”是什么意思?
  • @mico 是的,原生 UIViewControler
  • @JerryZhou 你可以通过开发插件在flutter应用中使用原生代码。但是您必须编写一些代码进行集成。请参阅此链接flutter.dev/docs/development/packages-and-plugins/…。同样的方法,你也可以在已有的 Flutter 应用中添加一个新的包。

标签: flutter


【解决方案1】:

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

根据 [2],您可以使用 Container 中的装饰器来分层显示内容,假设您可以将原生内容 嵌入 显示到 Flutter 代码。在这种情况下,请务必使用方法 1。

但是,我只能从 Flutter 文档 [4] 中找到 platform-channels 类型的解决方案来执行本机代码,并在其中声明例如:

为了符合通道的 UI 线程要求,您可能需要从后台线程跳转到 Android 的 UI 线程来执行通道方法。

在平台频道的其他帖子 [3] 中:

当用户点击返回时,我想导航返回以颤动 [..]

两者都暗示原生的一切都发生在原生线程和视图中,所以除了你的第二种方法之外,我看不到其他可能性,所有都是原生的。

所以,一切都取决于你如何将原生元素融入 Flutter。如果嵌入,则使用 Flutter 进行叠加,否则全部使用原生。我认为衡量这一点的好方法是,如果你在原生查看器中看到 Flutter 生成的代码中的任何内容,你就有机会覆盖,否则就直接使用原生代码。


[1]Open native UIViewController in Flutter

[2]https://cogitas.net/overlay-text-icon-image-flutter/

[3]How to change the root view controller back to flutter from native iOS?

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

【讨论】:

  • 抱歉耽搁了,对我来说有点多,让我先检查一下。
猜你喜欢
  • 1970-01-01
  • 2015-06-18
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
相关资源
最近更新 更多