美文网首页
混合栈管理

混合栈管理

作者: Crazy2015 | 来源:发表于2021-05-22 22:37 被阅读0次

Flutter 管理页面有两个概念:Route 和 Navigator。

Navigator 是一个路由管理的 Widget(Flutter 中万物皆 Widget),它通过一个栈来管理一个路由 Widget 集合。通常当前屏幕显示的页面就是栈顶的路由。

路由 (Route) 在移动开发中通常指页面(Page),这跟 web 开发中单页应用的 Route 概念意义是相同的,Route 在 Android 中通常指一个 Activity,在 iOS 中指一个 ViewController。所谓路由管理,就是管理页面之间如何跳转,通常也可被称为导航管理。这和原生开发类似,无论是 Android 还是 iOS,导航管理都会维护一个路由栈,路由入栈 (push) 操作对应打开一个新页面,路由出栈 (pop) 操作对应页面关闭操作,而路由管理主要是指如何来管理路由栈。

image.png

如果是纯 Flutter 工程,页面栈无需我们进行管理,但是引入到 Native 工程内,就需要考虑如何管理混合栈。并且需要解决以下几个问题:

  1. 保证 Flutter 页面与 Native 页面之间的跳转从用户体验上没有任何差异

  2. 页面资源化(马蜂窝特有的业务逻辑)

  3. 保证生命周期完整性,处理相关打点事件上报

  4. 资源性能问题

参考了业界内的解决方法,以及项目自身的实际场景,我们选择类似于 H5 在 Navite 中嵌入的方式,统一通过 openURL 跳转到一个 Native 页面(FlutterContainerVC),Native 页面通过 addChildViewController 方式添加 FlutterViewController(负责 Flutter 页面渲染),同时通过 channel 同步 Native 页面与 Flutter 页面。

  • 每一次的 push/pop 由 Native 发起,同时通过 channel 保持 Native 与 Flutter 页面同步——在 Native 中跳转 Flutter 页面与跳转原生无差异

  • 一个 Flutter 页面对应一个 Native 页面(FlutterContainerVC)——解决页面资源化

  • FlutterContainerVC 通过 addChildViewController 对单例 FlutterViewController 进行复用——保证生命周期完整性,处理相关打点事件上报

  • 由于每一个 FlutterViewController(提供 Flutter 视图的实现)会启动三个线程,分别是 UI 线程、GPU 线程和 IO 线程,使用单例 FlutterViewController 可以减少对资源的占用——解决资源性能问题

相关文章

  • 混合栈管理

    Flutter 管理页面有两个概念:Route 和 Navigator。 Navigator 是一个路由管理的 W...

  • Flutter混合栈管理

    背景及综述 Flutter 在目前跨平台方案中有更好的平台一致性以及更优的体验。但对于本身已有成熟的业务代码的项目...

  • Flutter的iOS应用篇之混合开发篇

    本篇,重点介绍如何让Flutter能够开发,实现业务需求。这部分包括:混合栈的管理,混合下的能力补齐和包管理。 混...

  • Flutter学习中遇到的问题:已有项目加入Flutter模块

    本文主要尝试解决如下几个问题: 如何在在已经项目加入Flutter混合跳转混合栈问题混合栈数据问题 跳转黑屏是因为...

  • hybrid_stack_manager浅析

    在混合工程中,flutter和原生之间的页面栈如何管理呢,由于我们采用的是hybrid_stack_manager...

  • Flutter混合栈实践

    混合栈产生原因 Flutter热度很高,无论大小公司都跃跃预试,接入的形式可能是: 除了最后一种情况不用考虑混合栈...

  • Flutter/Native混合工程页面跳转

    这篇文章介绍Flutter页面的入栈出栈方式、Flutter页面和Native页面互相跳转的方法,以及混合页面栈的...

  • 可以打印栈信息的日志函数,移动混合开发必备!!!

    stack-log 可以打印栈信息的日志函数,移动混合开发必备!!! 简介 断点信息,可以反映函数的调用栈,但是不...

  • 全栈混合app开发

    说到混合APP开发,我们就要先谈谈源生APP开发.源生APP开发即我们所称的传统APP开发模式,该开发针对现在主流...

  • Flutter 混合栈复用原理

    本文将以 Android 视角,来扒一扒 Flutter 混合栈的前世今生。其实也就是从 1.0 正式发布到现在 ...

网友评论

      本文标题:混合栈管理

      本文链接:https://www.haomeiwen.com/subject/sxoojltx.html