首先,Flutter是一个优秀的跨 IOS/Android 开发平台。
Flutter是一款移动应用程序SDK,一份代码可以同时生成iOS和Android两个高性能、高保真、表现一致的应用程序。
Flutter目标是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序。
现在(2020年底)网上对他的看法是有好的有有坏的,结合我个人多年开发的经验以及对这个世界理解来谈一谈吧。
Flutter适合做什么?
需要实现 IOS/Android 多端发布,那么 Flutter 可以是选项之一。
公司为了方便管理客户端,需要一端开发多端发布。跨平台的开发方案那么多,为什么独独选择它呢?如果说你有以下几个需求,那么further说是你的首选。
- APP有着丰富的2D动画效果,并希望它们表现良好。
- 有一定保密需求,不希望APP数据泄露,被爬。
- 对跨端应用的流畅度要求较高。
第1个,和第三点一起解释下,Flutter 基于 OpenGL 驱动绘制UI界面,做做动画是手到擒来。由于Flutter 相较于其他 “类Web” 跨端解决方案的主要区别就是,没有中间层- “js runtime”, 这一点就能提高不少性能。还没完,Flutter 还自己实现 手机OS的渲染层,他不用 手机的渲染层,也就是说它可以按照自己的需求定制渲染层,相比手机OS就少了很多包袱。这样的话,他的性能可以倒逼native的。
第2点,我发现,使用xian鱼App的过程中,通过长按点击是不能够触发选择复制的。刚刚也说了Flutter 是通过OpenGL 绘制的画面,没有用到手机的渲染层,那么对手机来讲,呈现在屏幕上的就是一幅动画,不是native 组件,也不是Hmtl,没法去捕捉文本,等元素。(除非OCR)
我们可以用Selenium,Appium 做测试工具,更或者爬虫。就 Flutter 就只知道Widget Inspector ,且还是调试未打包的App,这对爬虫就很不友好了,只能靠抓网络包了。
要克服第二点,就看Google 官方会不会把 Flutter Inspector 放入终端了。或者说将UI layer 层暴露给OS,让手机OS能够审查元素。
所以,目前Flutter还是非常棒的防注入防爬虫解决方案。例如我能网上找到tao宝App爬虫,但xian鱼App爬虫几乎没有(我知道这里有人就要说通过 http抓包模拟请求,这种爬虫很容易挂)。我预测,未来数据会形成自己的孤岛,爬虫会逐渐Selenium化。
Flutter 不适合
好的,说完了他适合做什么再说说不适合做什么。
- 如果说你希望用较少的开发人员h5,小程序, PC,安卓IOS全面开发。那么Flutter生态和web生态是割裂的。
- 你的应用和用户底层有密切交互,比如,小米,锤子手机对手机的OS做了深度定制,并且希望打通各个APP的边界,你也希望和其他App有交互,那么用Flutter开发是不适合的。手机OS需要能够inspect Flutter应用,或者Flutter应用将 Widget layer 层暴露给手机OS。也就是说 Flutter App 需要自己实现长按并复制字符串。
例如,Big Bang 功能,通过长按,获取当前屏幕的所有文字,在Flutter应用捕获到的就是一副图片而已,要获取其中的文字就需要OCR了。这显然就很绕了。
关于现在
如果现在已用了Flutter 就继续用吧,性能表现挺不错的。就目前来看它能解决当下的问题,能否成为下下一代OS的应用开发语言,还要看谷歌的推力了。
如果技术选型阶段,除非有保密需求,为啥不拥抱web生态呢,至于性能问题,就丢给未来的芯片来解决吧。
关于未来
谷歌的Funchsia os—这是谷歌为下一代计算平台开发的os系统。其中,Flutter 做首选的开发环境。这一破坏式得创新,谷歌是急切得想摆脱android卡,慢的帽子,把性能摆在了第1位。那么可以说拥抱了Flutter,就拥抱了未来的OS。
但是,随着最近鸿蒙OS—面向未来的分布式系统的推出。我看到了另一个山头在崛起,最近鸿蒙os开发套件的发版,我了解到的是鸿蒙os的前端ui的还是用的xml来描述(大家觉得像vue),编程语言呢还是Java,且鸿蒙的目标是全平台——手机,手表,电视,PC,智能家具。鸿蒙还集成了——轻量级 JS 核心开发框架。我想在未来JS生态还是会有一席之地。