Flutter 可以简单的理解为一个使用Dart语言进行开发的跨平台UI框架。因此,入门需要学习的东西主要有两块:
Dart语言;
Flutter 框架;
Dart 语言设计之初是为了替代 Javascript, 因此,整体上没有那么多语言bug, 会比 JS 要更加符合后端同学的语言习惯。语言入门只推荐一个官方的 A Tour of the Dart Language 学习资料。看资料的过程中,可以结合 DartPad
写一些代码片段,辅助记忆和理解。Dart 语言学习笔记:
一切皆对象,默认值都是null
https://pan.baidu.com/s/1TipcFUwy7sUf9xBG3zJaqw?pwd=hi14
提取码: hi14
下划线开头的变量是私有变量,跟Golang的语言设计风格类似
基础类型转换,依赖 parse 和 toString 方法
string是 utf-16, 有点非主流
函数默认值必须是 const, 规避不可重入的问题
Dart的所有异常都是 unchecked exception,且可以抛出任意object作为异常
构造函数可以取名称,便于阅读理解,但是这点改进对于引入的复杂度并不划算
整体看,Dart 引入的一些语言特性是 python + Java 的合体。语言上中规中矩,没有什么亮点。可以看成是 javascript 的静态类型版。但是,谁让Dart搭上了Flutter这趟潜力股,而Flutter又找了Google这个大干爹呢。老实学吧,反正也就一两个小时的事。
关于Flutter本身的学习资料,其官方网站的文档一如既往地保持了 Google 级文档的水准。但是官方文档有点大而全,可能没有足够时间通读,一时半会也不容易抓住重点。我推荐几个资料你一定要仔细阅读:
Introduction to declarative UI: 建立Flutter UI的一个初步认知和直观感受。
无论你是不是从其他平台转过来的,建议你都阅读一下Flutter for Android developers, Flutter for iOS developers, Flutter for web developers. 这里面你能了解到其他平台到Flutter的一些概念映射,以及常见问题的解决方案。
以上资料学习完以后,推荐看优达学院的免费视频课程Build Native Mobile Apps with Flutter. 课程分上下两部分,时间不长,但是覆盖了Flutter自定义widget, 导航, API调用等多个方面。两个晚上可以学完。
学习完以上资料,附带一些课程联系,你会花大约1~2个周末的时间。学完以后,你已经初步具备开发跨平台 app 的能力了。(我个人的情况是, 两个周末学习完上面的资料,并完成一个简单的 app 开发并提交到app store审核,相信你也能做到。)
在开发app过程中,你可能会查找组件,这里推荐阿里的flutter-go.
如果需要进一步深入,可以阅读学习其他人的代码。
此外,如果你关注 Flutter 在桌面端的跨平台情况,由于官方还没有发布桌面支持的正式版本。推荐你当前先watch Desktop Embedding for Flutter 和 go-flutter 两个项目。
总结
在Google Fusion战略和明星项目chromium加持下,以及国内巨头积极跟入的背景下,花两个周末系统学习一下Flutter个人认为是一个潜在投资性价比很高的事情。另一方面,Flutter从去年12月才发布1.0正式版,整体成熟度还不是很高,因此在实际项目中并不建议太激进的引入使用,并且Flutter在一些原生支持上海不够完善。比如,使用Flutter接收其他app分享的内容,android平台下你可以根据How do I handle incoming intents from external applications in Flutter?来解决,但是在iOS平台,当前阶段则是彻底不支持。