Flutter 本质上是一个游戏引擎,它所有的视图都是自绘的。自绘使得 Flutter 可以在所有平台上保持视图一致。但也导致许多原生视图的特性在 Flutter 上无法使用,比如 Android 12 的滚动回弹动画。
另外比较致命的一点是,Flutter 的绘图性能是比不过原生的,这体现在翻页滚动流畅度、手势反馈延迟等许多方面。假如原生的用户体验是 100 分,Skia 引擎的 Flutter 的上限是 90 分,希望 Impeller 引擎的 Flutter 的上限能达到 95 分以上。
相比于天生是游戏引擎的 Flutter ,React Native 则是一个为普通 APP 而生的。RN 在各平台上始终使用
原生视图,能获得原生级别 100 分的流畅度上限。
再者,Flutter 在视图写法、状态管理上都落后 RN 一个版本。Flutter 使用嵌套地狱、RN 使用 jsx ; Flutter 的 Riverpod 、bloc 等状态管理方案还遵守 Redux 的思想,React 新一代的 zustand 、jotai 、valtio 大幅减少了模板代码。
在开发效率上 React Native 显然高于 Flutter 。
我的建议是,如果你的 APP 不需要复杂的绘图操作,也就是普通 APP 的话,应该首选 RN + expo ;如果你要开发具有复杂视图的 APP ,比如游戏、谷歌地球、高德地图、Wonderous ,应该首选 Flutter 。
建议体验一下 V2EX 的 Flutter 客户端和 React Native 客户端,Flutter 版本滑动、翻页的时候存在明显卡顿,RN 的体验明显好得多。
https://github.com/guozhigq/flutter_v2exhttps://github.com/liaoliao666/v2ex