soragui
soragui 编程-学习-思考

Flutter 学习规划

Flutter 学习规划

Flutter 稳定版已在一个月前发布了,而且前几天还在Github上规划了其2019RoadMap。那么我也来说一下目前对Flutter的理解以及2019年的学习路线和规划。

对 Flutter 的理解

首先,我是从工程的角度也就是实际开发中一点一点去接触和学习Flutter的。有好处同样也有坏处,好处就是学习动力很足,吸收比较快,也很容易看到一点成效,而坏处也就是弊端也很明显,那就是没有系统学习,学习的不够升入。当然,这些弊端如果得不到及时的处理,那危害也是足够大的。因此,在这里我也就简单的梳理一下我目前掌握的Flutter知识体系,好系统的了解一下目前的状态,然后在规划一下学习路线和目标。

Flutter 工程结构

老实说,对于移动开发,我是半路出家,从来没有系统的学习过。当然,我也希望可以系统的学习,不过自己的毅力和执行力还是很有限的。紧接着就遇到了 Flutter,刚开始的时候做做UI,还觉得很不错,慢慢的也就喜欢上了它。

Flutter 的开发环境我使用的是AS。其工程结构也很简单,第一次建立一个Project的时候看到main文件的时候好像自己是建立了一个C语言项目,心中不免怀疑这真的可以吗?不过慢慢的也就习惯了。主要目录结构如下:

1
2
3
4
5
6
7
8
9
-------
|
|---android/
|---assets/
|---ios/
|---lib/
|---pubspec.yaml

其中 Android 和 iOS 是平台相关的代码,assets 是存放项目资源文件的包括图片、字体、音视频资源等,然后 pubspec.yaml 就是和项目相关的配置,资源路径以及第三方的包或插件声明等。最主要的就是 lib 目录下面所有的 dart 代码都在里面。

我也看了其他跨平台的相关描述,但没有真正接触过,所以印象不是很深刻。不过,影像性能最主要的一点好像就是UI绘制上面,Flutter的UI之所以和平台无关,而且很流畅,主要是因为没有中间桥梁,是直接和设备的Canvas打交道的,也就是跨过了平台SDK,自己建立了自己的Wdiget作为UI。然后UI这一部分就算解决问题了,第二个就是插件了,这主要是完成和Native服务之间的通信,也就是设备相关的资源和服务使用平台相关的代码去完成,然后直接返回相关结果。这个实在是太好了。

关于编程风格

Flutter使用的事dart语言,初次接触感觉很是奇怪。因为没有接触过JavaScript,以为这种语法是新创建的,后来才发现他们的语法是很相似的,包括状态管理方面。刚开始写的时候没有什么复杂的业务逻辑,大部分都是UI代码,准确来说就是配置相关参数,后来数据处理越来越多了,才发现之前代码结构的弊端,因此也尝试着去学习一些框架什么的。

2019 学习路线

很早之前就希望可以参与到一个开源项目中去,一直都没有找到一个合适的项目。现在找到了,那就是Flutter。所以,2019年的学习目标就是向贡献Flutter代码进发。

  • 首先需要学习的就是 Dart 语言,了解其特性熟悉 Dart VM。
  • 然后就是对 Flutter SDK 有所了解。主要是围绕 Widget 去学习。阅读基础Widget的代码,然后熟悉 Painting 是如何实现的。
  • 再者就是尝试写一些插件,比如语音识别,平台支付,文件处理,蓝牙,相机等。

目前的认知水平也就这么点了,以后有一点收获就去写一写文章总结一下吧!