并没有革命性,它任何一个概念都并非独创,但它真正优秀的地方是它思路的正确性,这个正确性和采用语言或什么现代特性都无关,单纯就是映射来弥平差距的做法比不过自绘的便捷性和统一性。
React Native的思路可以理解为定义通用中间层映射到原生,因为原生组件性能最佳所以单看似乎是个很好的方案,但问题是每一个平台经过多年发展早就天差地远,任何一个同时做过安卓和iOS的人都很清楚,看起来好像都是那些视图,实际上编程细节以及特性上都天差地远,要抹平差距可以说异常困难,更何况随着系统版本的迭代很多内容会发生改变,以上都导致ReactNative框架的工作量巨大。
而Flutter优秀就优秀在它愿意退而求其次,不使用原生视图而采用自行绘制,底层采取相同绘制框架就可保证在各端的工作量相对小,其性能虽不可能比过原生但这样可以保证一致性,同时因为没有使用系统控件自然也基本不受系统版本更新的影响,这方面即便原生开发者也每年难免要受到影响,比如iOS15后原先设置导航栏颜色和背景图片的方式无用,原生开发者也不得已来一波适配更新,使用RN框架自然也要跟进变化,但Flutter反而不受影响,同时基于绘制思路Flutter扩展到更多平台也变得相对简单,事实也是Flutter框架在这相对不长的推出时间里不仅仅是性能日渐提升,支持的平台也早已不局限于移动端。
至于很多否定Flutter的人总爱拿着dart语言和那视图树的嵌套说事,但这根本就是狭隘,前端爱js ,安卓爱java 或kotlin ,iOS爱oc 或swift。说到底不过是爱自己的语言舒适区,采用任何一种都不会让其他平台的开发者觉得有多开心,至于视图树嵌套那就是设计的特性,不过是属性和组建写一起确实比较乱,但真要说,难道html不是嵌套?安卓的xml不是嵌套?至于iOS 的autolayout 确实不是嵌套,但那代码的恶心程度还不如嵌套呢,不过是个封装抽取的事情,自己非写个布局几百行的超长widget 还怪的到语言不成。