为何有人会喜欢Flutter?Flutter 的好与坏

Python实战社群

Java实战社群

长按识别下方二维码,按需求添加

扫码关注添加客服

进Python社群▲

扫码关注添加客服

进Java社群

作者丨恋猫de小郭

来源丨GSYTech(ID:gsy-tech-zone)

如下图,今天在知乎收到了这样一个问题:“为什么有人喜欢 Flutter ?”,相信对于刚刚接触 Flutter 的人可能都会有这样的疑问。

Flutter 最有价值的点不是它的语言,也不是它的代码设计模式,是它的跨平台。

Flutter 的跨平台不同于 weex、react-native ,它核心是跨平台的优秀设计。以前的应用跨平台框架都需要依赖原生平台的控件,比如: react-native 的 <View> 标签需要转化为 Android 平台的 ViewGroup 控件,然后实现渲染。

但是 Flutter 直接使用 skia 引擎实现 GPU/CPU 的渲染 ,所以 Flutter 默认情况下的 Widget 控件都是平台无关的,只要你的平台有 GPU/CPU ,然后提供一个画板(Surface),剩下的 UI 效果完全由 Flutter Engine 处理,这让 Flutter 的 UI 和平台的关联性很低。

对比以前在 react-native weex 上 时不时遇到:“在 Android 端调整完样式后,在 iOS 端不生效或者异常的情况”,这是因为 react-native 和 weex 等框架需要依赖原生控件,而原生的控件在不同版本和平台上都存在一定的差异化。

这样的区别主要在于:react-native 在不同平台上渲染出来的控件效果会有平台差异,样式和参数效果随着版本更新,不同平台甚至同平台不同型号都可能出现不一样的问题,而 Flutter 至少在 UI 效果上很好的实现了统一

我日常在开发 App 时,UI 效果很多时候我只需要在 IOS 模拟器上进行调试开发,然后回到 Android 平台除了尺寸问题外,基本很少遇到需要兼容UI的情况。

关于 skia 引擎在 Android 平台默认就自带了,并且 Android 原生控件最后本来也是使用 skia 进行渲染,所以可以实现平台上性能的接近,而 iOS 平台需要把 skia 打包进 App 里,所以应用体积会略微变大,从下面的简单对比也可以看到为什么 Flutter 性能会比较好。

那为什么很多人感知 Flutter 性能不好呢?抛开个人代码问题,最大的问题其实是 Flutter 很不适合混合开发

相较于 react-native ,在混合开发时因为最终渲染树都是在同一个领域内,所以能够较为简单的和原生平台接壤,而 Flutter 的 UI 本身就独立于原生渲染树,混合成本大大提高。

另外 Flutter 类似于轻量级的游戏引擎,所以它很吃内存,特别是在 iOS 上,混合开发会导致应用大小和内存使用的大幅度增加,我一直不提倡 Flutter 使用混合开发。

所以不同场景应该选择不同框架,没有最好的,只有最合适的。

至于吐槽最多的应该就是 Flutter 嵌套恶心,是的, Flutter 的嵌套看起来很弱智,但是它为什么这这样设计?

其中一个原因是因为 Flutter 中你写的 Widget 并不是真正的控件,在 Flutter 的 dart framework 里,Flutter 的状态管理和渲染需要经历 Widget -> Element -> RenderObject -> Layer 等的变换过程,开发者编写的 Widget 代码,其实在 Flutter 中定位更像配置文件,而这些配置文件可以通过模版的方式来减少不必要的嵌套,其中官方的 Container 就是很好的例子。

如果对这方面感兴趣的,可以看看这篇文章:

Agora Talk 回顾 | 深入聊聊不一样的 Flutter

Flutter 本质上能火起来是有它的可取之处,只能说不同的场景定位选择,Flutter 在纯 Flutter 端开发的体验还是不错的,而如今 Flutter 对 WebMacOSWinLinux 等平台的支持也在日益成熟,所以还是值得了解关注,当然最后你会不会喜欢,只能说是个人爱好了。

程序员专栏 扫码关注填加客服 长按识别下方二维码进群

近期精彩内容推荐:  

 程序员买房前后对比,看完后已哭瞎...

 内部泄露版!互联网大厂的薪资和职级一览

 Google 出品的 Java 编码规范

 Python编程 高阶函数使用技巧

在看点这里好文分享给更多人↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值