flutter - 颤振,在从颤振推送本机视图控制器后,这可能会再次在本机视图控制器上方显示更多内容吗?
问题描述
我有一个从框架实现的本机 viewController,我不能直接将其更改为颤动视图。
所以我想我可以:
native ViewController
在(第三方原生video player
)中显示 UIflutter main app
。- 然后我需要显示一些
extra content
(例如user avatar
,一些text message
等等)above/on native ViewController
- 但如果可能的话,我更愿意用 实现这个额外的内容
flutter
?
这是好方法吗?如果没有,那么我认为必须做以下事情:
native ViewController(a video player)
在Flutter 主应用程序中显示 UI 。- 然后显示一些
extra content with native code
。
PS:为什么我不能把原生的 VideController 改成 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
推荐阅读
- regex - Laravel 中的正则表达式,如何允许 NULL 值
- reactjs - 在 React 上重用组件
- javascript - can't use replaceAll or replace with nextjs/reactjs
- azure - 无法从 Azure Pipelines 将包下载到 Azure Artifacts
- security - Android - 在进入 RAM 之前加密变量
- c++ - C++20 概念和模板:固定大小和可调整大小的数组
- actions-on-google - 在 Google 地图中导航时调用操作:“此设备不支持 [操作名称]”
- prometheus - Alertmanager Send Resolved 到一个单独的通道
- r - 如何使用 setNodeSizeMapping 在 cytoscape RCy3 中映射节点大小
- python - 线图不绘图