前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为何有人会喜欢Flutter?Flutter 的好与坏

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

作者头像
博文视点Broadview
发布2023-05-19 19:52:26
3760
发布2023-05-19 19:52:26
举报

如下图,今天在知乎收到了这样一个问题:“为什么有人喜欢 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 就是很好的例子。

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

作者新书推荐

▊《Flutter开发实战详解》

郭树煜 著

本书以实战为导向,由浅入深地介绍了Flutter开发过程中的基础体系、实战技巧和源码分析。通过本书,读者可以快速掌握Flutter的开发技能,并通过实战学习Flutter的源码设计。同时,本书还配套全面的学习例程与完整的开源项目,真正做到为读者的Flutter学习旅程披荆斩棘。

▼扫码获取本书详情▼

代码语言:javascript
复制
如果喜欢本文欢迎 在看丨留言丨分享至朋友圈 三连
 热文推荐  
算数or算卦,和业务人谈“预测”到底在谈啥?
Python之父加入微软,一开口就知道是老“凡学家”了
秒懂商用区块链关键技术:智能合约
演说泰斗加尔·雷纳德亲自解读《演说之禅》的奥秘

▼点击阅读原文,了解本书详情~
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档