前言:
笔者是开发5年的iOS转Flutter下的跨平台开发,之前也一直有了解Flutter,但并没有实际的开发经验,如今已经开发Flutter半年了,就来说说Flutter这个框架。
谷歌推出Flutter,最重要的目的肯定是加强自己平台的影响力,对于开发者或企业而言,更多的是解决多平台语言不一样的和开发资金成本等问题,所以Flutter对于企业和开发者都是不错的选择。
当然开发者之所以会选择Flutter,更多的是Flutter可以在iOS和Android手机上有不错的体验效果,然后开发者的代码更容易学习,Flutter框架中的UI层采用的是FlutterSDK,而数据处理用的是Dart语言。
UI
笔者之前也开发过小程序,所以对css也有一定的了解,而Flutter中的视图层面上的设计也是采用的是灵活布局,这样开发者就不需要对视图做详细的位置设计,类似iOS中布局就需要拿到每个视图对象,并逐个进行排列,所以iOS的开发,个人觉得视图占用了很大的时间。而Flutter在视图层面上可以看作已经对原生开发界面的代码做了一次封装,界面层的开发就更加快捷。
Flutter的界面渲染采用的是自己开发的渲染引擎,而不是类似React native的那种直接给到原生的平台,所以Flutter的强大之处就是一套代码布局在iOS和Android的界面上是一样的像素展示,当然再往上看,就是UI层面的设计理念了,具体的就是Widget树、Element树、Rendering树的设计,当然开发者平时常用的就是Widget了,具体的可以看看相关的文章:UI层的设计理念。
Dart
说完了UI层,就看看逻辑处理层,这里Google采用的是Dart语言去处理Flutter框架的数据层,包含线程,微宏观任务等。那Flutter为什么选择了Dart语言呢,很多文章专门从语言的编译、运行、热加载、内存、垃圾回收机制等作了详细的介绍,可以看看这篇文章:Flutter为什么选择Dart。但如果只是从笔者开发的角度看的话,主要是以下几点
1.Dart对象的编写类似Java的语言风格,易学,易懂。
2.Dart中对数据的处理方法类似JavaScript,处理起来比较轻便,灵活,不像swift那样需要写起来考虑很多。
3.Dart中核心的部分是微宏观任务,开发者只需要创建任务,至于多任务的执行交给了由MicroTask去处理。
4.Dart编译的速度比较快,比隔壁的swift编译的速度快的多。
综合上面的,个人认为学习Dart还是很快能掌握并且进行开发的。
生态
生态这个方面要说做的最好的还是iOS,从开发到系统到应用商店一体化,Flutter的生态主要是庞大的用户群体和Pub上的插件库。
开发群体
如果开发者想用跨平台开发app的话,现在第一时间想到的就是Flutter,没办法,开发者还是基于上面笔者说的那些,所以这个开发者群体日益壮大,加上Google也是不断的更新维护这个框架,让这个开发生态日益完善和易于学习。
插件库
开发Flutter最大的感受就是很少自己去封装一些功能,都是采用插件库的get,而在Pub上的插件库是真的多,一个功能的插件有很多版本,这样开发者有很多参考的样例,对于日常开发中解决问题而言是非常方便的。
小结
总而言之,言而总之。Flutter框架不管从设计上还是效率上都是不错的,值得开发者去学习的,因为它的设计思想集大成于一身,图层的渲染借助了二叉树的设计、状态管理借助了web、不需要考虑繁杂的线程和队列、布局借助了css,生态的日益完善,在用户体验上也是不错的,那么就让我们看看具体的Flutter都是怎么做的吧!