Flutter使用回顾

前公司项目最新的迭代版本中已经用到了几个Flutter开发的页面。现在总结一下这段时间的使用体会。
1、Flutter介绍与看法
2、Flutter学习路线
3、Flutter使用中存在的一些问题

1、Flutter介绍与看法

Flutter是谷歌全新的下一代发展平台,它允许程序员用一种简单的编程语言Dart为苹果的iPhone/iPad iOS平台和谷歌的Android手机/平板电脑编写程序。
简单说就是一种手机App跨平台的开发框架。

针对Flutter而言,结合参考内容,个人有以下看法,整体来看Flutter是属于一个早期开发阶段的语言,目前Flutter的开发生态,不管是语言还是框架还是工具,使用方面的内容,目前都不是特别成熟。

对于使用Flutter的初衷,我相信大部分领导都是出于提高生产力。但是目前就我们的项目来看,相同的时间,如果改用Native去写,我觉得两者进度并没有多大的差异,可能Native端反而会更快一些。
因为目前Flutter中非常常见的一些控件功能都无法满足,往往在轮子上需要耗费大量的时间,因此建议仅仅做尝试使用,或者接入小批量模块,等待Flutter成熟之后再大面积使用。

对于个人开发者,可以使用纯Flutter去开发App尝鲜;
对于小团队,不推荐使用纯Flutter,出了问题,解决不了,浪费时间;
对于商业项目,不推荐使用纯Flutter,体验不好,埋坑时间不少。
与硬件强相关的项目,不推荐使用纯Flutter。

2、Flutter学习路线

这里写一下我的学习路线吧,仅供参考。
1、首先准备开发环境和开发工具。
Flutter中文网
点击“快速开始”,跟着走就可以了。我的是Mac电脑,编辑器我用的是VSCode,模拟器用Xcode的iOS模拟器。用Android Studio也可以,不过我感觉太大了,模拟器也很卡。。

2、安装完环境后,我建议先不看Flutter中文网下面的内容,先学Dart。
Dart中文网
学两三天就够了,比如基本语法,变量,类,对象,操作符,函数方法这些,弄明白基本的差不多就可以继续Flutter中文网下面的Hello World了。
Dart语法学习

3、接下来就是从基本控件开始学习,也可以跟着这本书走。
Flutter实战
先学button、text、image、textfield、listView这些基本控件,能做UI了,再学网络,最后找找第三方库用一用就差不多了。
网络:Flutter http请求库dio稳定版发布
还有一些好的学习网址:
Flutter 入门系列
Flutter基础Widget之按钮
Flutter 基础组件之 Container
Flutter基础—定位对齐之对齐
Flutter Stack布局中定位的方式
Flutter - State类
flutter控制显示隐藏
flutter省市三级联动选择器加强版
用flutter写一个精美的登录页面
学习Flutter的Demo工程,以及Flutter资源集合
flutter常用库
flutter库搜索

4、UI学的差不多了,网络请求也能拉到数据了,就能做页面出来了,下一步就是集成到已有的原生项目中,与原生交互,然后打包发布了。
Flutter-现有iOS工程引入Flutter
Flutter实战:手把手教你写Flutter Plugin
Flutter跟Native相互通信Platform Channels
Flutter的需要与原生交互的一些常用库

3、Flutter使用中存在的一些问题

任何技术都不能忽略平台背后的商业推动,我不是一个跨平台技术的追求者,我个人也一直觉得跨平台是个伪命题。

Flutter目前存在的问题很多:

1、适配问题:Flutter说的是跨平台,但是没有很完美的解决各个屏幕差异所带来的问题。实际上还是需要去做一些适配;

2、性能问题:目前看这个问题特别突出,在一些性能低的Android手机上,会出现一些卡顿问题。在一些高端机型上,一些转场动画,效果也不是特别理想,一旦涉及到一些复杂的页面,切换页面就会出现很明显的卡顿问题;

3、硬件相关问题:这个也是Flutter需要急需解决的问题,第三方硬件相关插件质量参差不齐,官方插件质量也堪忧。例如官方的camera插件,各种crash问题。

4、生命周期问题:插件层对生命周期的监控,是App级别的,无法针对某一个页面。Flutter中控件也没有很明确的生命周期这一概念,就是两三种状态的切换,没有像React中的生命周期,更不用说像Native中的那样。

5、现有项目正在进行当中,Flutter的开发工具链不成熟,对于快速迭代的项目,如果完整的使用Flutter,应用项目成本非常高,也不切实际。

6、现有的开发人员对Flutter的技能熟悉程度,无法满足批量定制性开发方案。