PlatformView
Flutter 中通过 PlatformView 可以嵌套原生 View 到 Flutter UI 中,这里面其实是使用了 Presentation + VirtualDisplay + Surface 等实现的,大致原理就是:
使用了类似副屏显示的技术,VirtualDisplay 类代表一个虚拟显示器,调用 DisplayManager 的 createVirtualDisplay() 方法,将虚拟显示器的内容渲染在一个 Surface 控件上,然后将 Surface 的 id 通知给 Dart,让 engine 绘制时,在内存中找到对应的 Surface 画面内存数据,然后绘制出来。em… 实时控件截图渲染显示技术。
- Flutter 的 Debug 下是 JIT 模式,release下是AOT模式。
- Flutter 中可以通过 mixins AutomaticKeepAliveClientMixin ,然后重写 wantKeepAlive 保持住页面,记得在被保持住的页面 build 中调用 super.build 。(因为 mixins 特性)。
- Flutter 手势事件主要是通过竞技判断的:
主要有 hitTest 把所有需要处理的控件对应的 RenderObject , 从 child 到 parent 全部组合成列表,从最里面一直添加到最外层。
然后从队列头的 child 开始 for 循环执行 handleEvent 方法,执行 handleEvent 的过程不会被拦截打断。
一般情况下 Down 事件不会决出胜利者,大部分时候是在 MOVE 或者 UP 的时候才会决出胜利者。

本文是2019年Flutter面试知识点的第二部分,涉及PlatformView的概念,它是如何利用VirtualDisplay和Surface实现原生View嵌入的。此外,还讨论了Flutter的手势事件处理机制、ListView滑动原理以及状态管理。Platform Channel包括BasicMessageChannel、MethodChannel和EventChannel,用于Dart与原生代码的通信,并提示其非线程安全。最后,文章解释了Android启动页的工作原理,如何通过meta-data配置实现闪屏效果。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



