了解
目前对Flutter的理解还是很少的,只是想作为一个笔记,在不断理解的基础上进行不断的修改与完善,查漏补缺,看看自己学之前与学之后是的理解是一个什么状态。
Flutter介绍
Flutter 是谷歌的移动端 UI 框架,可在极短的时间内构建 Android 和 iOS 上高质量的原生级应用。 Flutter 可与现有代码一起工作, 它被世界各地的开发者和组织使用, 并且 Flutter 是免费和开源的.
这是官网的介绍,大标题是“以极短的时间构建优雅的原生级应用”,可以了解到Flutter是一个框架,通过这个框架可以使用Dart语言通过一套代码构建Android和iOS应用程序。
Flutter里面同时提供了两种UI库的风格,第一种肯定是Material Design风格,还要就是Cupertino风格,也就是iOS中采用的风格。
个人理解应该是Flutter封装了一套完整的UI的API,在开发时候可以直接使用,通过官网介绍了解应该也可以直接调用Android和iOS中的原生API。
为什么使用Dart语言?
个人对其他语言并没有了解那么深,这个问题只是说下自己的想法和在网上查到的一些人的见解。
首先我一眼看上去,感觉Dart的格式并不友好,相比Kotlin觉得更是可读性差很多,据知乎上一位大神说和Flutter的工程师咨询,是因为Dart的团队距离他们很近,能很好的得到支持,不知道是否玩笑。用Dart代码写页面还是很容易理解的,至于与mxl相比哪种方式更好现在我还体会不好,因为还没有深度是使用Dart。
Dart同时支持AOT编译和JIT编译,Dart的编译和执行不仅非常灵活,而且速度很快。还有我觉得Dart是相对容易学习的。用Flautter的时候还支持热重载,这相比Instant Run的体验要好很多的,确实提高了效率,不会因为只改了一点页面而编译好久的状况。Dart是基于单线程模型的语言,但是也有自己的机制叫isolate。之间无法直接共享内存,这也就是避免了大部分使用锁的情况。
还有就是这是Google自己的语言,也是开源的,不会惹出88亿美元的的官司吧。总体感觉通过了解,还是一门很优秀的语言,而且在Google内外据说也得到很好的使用,而且随着Flutter以及新系统的推出,这门语言也有可能越来越好,不过后面情况谁也说不好,还要看Google怎么支持与推广。
Flutter是如何渲染界面的?
移动设备中有GPU和CPU,一般是GPU控制将数据渲染到显示设备上的,GPU主要是通过发出VSync同步信号去帧数据来传递给显示器。
FPS表示每秒传递的帧数,我们知道在理想情况下60FPS就感觉不到爱看,这意味着每个绘制时长应该在16ms以内,Android系统每隔16ms发出VSync信号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到刘畅的画面所需的60FPS。如果某个操作花费四件比较吃长 比如用了30ms,系统在得到VSync信号时就无法进行正常渲染,这样就发生了丢帧现象,就会感觉卡顿。
所以玩游戏的时候需要更好的CPU与GPU的支持。
Flutter只关心向GPU提供视图数据,只关心VSync信号,然后通过Google自己的Skia渲染引擎想GPU提供数据。所以说Flutter是直接通过Skia自己进行渲染,而不是调用某些API,这也是Flutter一直宣称原生体验的原因。
Flutter前景如何,是否值得学习?
这个每个人的看法不同,个人认为前景还可以,与React Native原理不同,Flutter是通过自己渲染,可能会体验会更好。使用Dart语言,这门语言目前看来说对于有编程经验的人来说可能还是相对容易些的,而支持库目前来看也还可以,也要看Google后续的动作吧。
对于公司来说如果维护一套代码来实现两个端无疑时间好事,从节约成本、到方便维护、界面统一都是很好的,但是Flutter商用应该仍有一段距离吧。
如果有时间又有兴趣的话,可以搞一下的,毕竟程序员就是在不断学习的道路上。