一项改变游戏规则的技术 - Flutter( 四 )


我记得我一开始写Flutter的组件的时候 , 非常地不习惯 , 甚至产生抗拒心理 。 因为Flutter的组件结构方式与我写了多年的web端组件写法是完全对立的 。 但是 , 当我写了2个星期后(我在网上到讨论 , 一般大家的过渡期也是2个周) , 开始觉得这种写法是如此自然又高效, 甚至开始怀疑以前自己写的那些代码:web端那种把HTML ,CSS ,JavaScritp分开的形式 , 是不是本身是种错误 。 也开始反思 , 为什么我从来没有怀疑过这种既定规则的合理行 。
因为我自己没有长期iOS端和Android端开发的经验 , 我不知道从iOS端的Layout布局和Android端的XML布局转换到Dart , 是怎样的心路历程 。 但是 , 下面是我从网上找到的一些感想:
一项改变游戏规则的技术 - Flutter
本文插图
native
Dart dev tool
Dart提供了一些工具来帮助你日常的开发和调试 , 其中一个是非常厉害的工具就是Dart dev tool 。 举一个例子:下图展示的是一个在Flutter里面常见的bug:子元素溢出了 。 这个时候你打开Dart dev tool , 你可以看到这个组件的布局 , 在这个工具上会显现这个元素相关的一些属性值 , 给你提供排除bug的思路 。 比如这个例子里 , 我们看到flex的值为‘null’ , 这可能是bug的原因 , 你可以通过下拉框选择一个flex的值 , 看是否可以解决这个bug:
一项改变游戏规则的技术 - Flutter
本文插图
dar-dev-tool
是否推荐项目采用Flutter
前面花了很大的篇幅来介绍我和我实际使用Flutter上线了一个App的故事和感受 , 也从Skia和Dart层面去分析了为什么Flutter具备有那么多的优点 , 而不只是官方宣传 。 那么最后的最后 , 作为一个还十分年轻的技术 , flutter是否适合在项目上使用呢?
没有一个技术是完美的 , 但是除了一些不可抗力的因素外 , 我们去做一个技术选型 , 依据的标准应该是它的优点是否超越它的缺点 。 不如我们再次来总结一下Flutter比较核心的的优点和缺点:
Flutter的优点:

  • 跨端 , 跨平台
  • 双端高度一致的UI
  • 漂亮的UI
  • 高性能
  • 开发效率高
Flutter目前存在的缺点:
  • 包的大小不算小(特别是混合项目)
  • 目前github上的open的issue有7000多
  • Flutter的error message不友好
  • 可能会有内存泄漏的问题(常见在iOS端)
Flutter从2018.02发布beta版 , 2018.12发布1.0版本 , 短短2年时间 , 到现在github上的start数量已经有81.6K 。 不论是国内还是国外 , 已经有大量的使用Flutter开发的产品 , 比如 Realtor.com Real Estate Search ,Google Assistant , 咸鱼等 。
当下 , Flutter和Fuchsia(谷歌正在研发的一个新的操作系统)都是谷歌的重心 , 所以大概率Flutter不会成为一个烂尾的项目 。 而且 , 就Flutter目前拥有的成绩证明 , 它已经足够优秀 , 何况它还这么年轻 。
所以从我自己的角度来说 , 十分推荐采用Flutter 。 可能web端和desktop端目前还不那么成熟 , 但是native端可以大胆尝试 。
文/ThoughtWorks 彭梦秋
更多精彩洞见 , 请关注微信公众号:ThoughtWorks洞见


推荐阅读