Flutter 与原生组件的相爱相杀:PlatformView 与纹理渲染原理大揭秘!
摘要
Flutter外接纹理渲染存在一个Bug,当使用Texture控件并引入PlatformView组件时,后者会导致Texture不再刷新。这个问题只在安卓平台上出现。文章介绍了PlatformView的渲染方案演进,从VirtualDisplay到现在的Hybrid Composition和PlatformViewWrapper。Hybrid Composition可以同时渲染原生组件和Flutter画布,解决了手势问题。Flutter团队对新的PlatformView实现方案非常有信心,即将退出舞台的Hybrid Composition渲染方式需要及时适配。对于外接纹理的刷新机制,通过源码得知,当视频渲染完成时,通过Android SurfaceTexture的OnFrameAvailableListener回调通知c层,但具体的刷新机制和Bug没有详细说明。根据Debug和nativeMarkTextureFrameAvailable的实现分析,Java层回调正常,问题可能出现在C层逻辑中。
欢迎在评论区写下你对这篇文章的看法。