2017年谷歌开源了 Flutter,如果说 React Native是为开发者做了平台兼容统一,那么 Flutter 更像是为开发者屏蔽了平台的概念。Flutter 作为跨平台的UI 框架,只需平台提供一个 Surface 和一个 Canvas 就可以完成界面的工作。Flutter 中绝大部分的 Widget 都与平台无关,开发者基于 Framework 开发 App,而 Framework 运行在 Flutter Engine 之上,由 Engine 进行适配和提供跨平台支持。这个跨平台的支持过程,其实就是将 Flutter Framework 中的 Widget 进行“数据化”处理,然后通 过 Engine 上的 Skia 直接绘制到屏幕上。Flutter 可以实现跨平台且内部控件与平台无关的原因,就在于 Skia 图形引擎。Skia 是谷 歌的图形引擎,在Chrome 浏览器、Android 等系统内均使用 Skia 作为绘图处理引擎。Android 平台本身就内置了 Skia,将 NativeCode 代码渲染成界面,所以相比 React Native, Flutter 在绘 制性能上少了中间代理,可以更接近原生的交互体验。因为 Flutter 属于跨平台 UI 框架,在需要用到平台硬件或者 API 的时候, 会通过 PlatformChannels 进行通信交互,补全 Flutter 框架非 UI 相关的能力。