前言
照着官方get-started教程做,略作补充。
入门
1 下载SDK安装包并解压
2 使用$ flutter doctor
做检查并安装相关工具
安装IOS相关工具时,如果报错
1 | configure: error: Package requirements (libusbmuxd >= 1.1.0) were not met: |
可以使用如下方法解决IOS toolchain安装异常解决
1 | brew update |
3 配置IDE,安装插件
4 尝试运行项目
创建、在Android和IOS模拟器上运行、修改字符串并热加载。
5 写第一个APP
分为两部分,入门文档主要介绍第一部分。这两部分的内容都可以在Google Codelas中找到。
入门之坑
- 使用命令行方式
flutter upgrade
升级需要谨慎,有一次升级后,flutter直接挂了。
移动端开发演进
详细请看文章为什么说Flutter是革命性的?
**传统(Android&IOS)**。APP直接调用平台控件和服务。
WebView。APP直接调用平台的WebView以及通过桥接的方式调用服务。
ReactNative。JS代码通过桥接的方式调用平台控件和服务。桥接的转化效率较低。
Flutter。APP端通过接口直接调用平台的Canvas、Events和服务,转化效率较桥接的方式快几个数量。
上面的图皆来自文章为什么说Flutter是革命性的?
其他
一切皆控件。所有的组成部分都是控件,包括位置、补白、主题、导航等。
Flutter运行机制。请看文章
Flutter视图
Flutter异步编程
大纲:
- 概念澄清:线程进程、并行并发、同步异步、阻塞非阻塞、单线程模型
- 单线程异步事件模型
- API使用及场景实践:本地编写、本地资源读写、网络请求等。
单线程模型
仅仅指代码在一个线程里执行,但可以通过工作线程调度某段代码在其他时刻异步触发。
事件机制
参考
- 异步async、await和Future的使用技巧
- JavaScript:彻底理解同步、异步和事件循环(Event Loop)
- JavaScript单线程异步的背后——事件循环机制
- JavaScript 运行机制详解:再谈Event Loop
- Flutter/Dart中的异步
- Dart asynchronous programming: Isolates and event loops
混合开发实践
这里考虑将flutter项目作为AAR添加到已有的Android工程里,可以将AAR文件作为本地文件依赖,或者发布AAR作为远程仓库依赖。
将flutter项目作为本地AAR依赖
- 创建flutter module项目
- 执行
flutter build apk
,生成aar文件./.android/Flutter/build/outputs/flutter-release.aar
- 将上述aar文件放入已有Android工程
app/libs
中,并使用api fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
依赖 - 在已有Android工程添加flutter初始化代码以及集成FlutterActivity的容器。
关于有三方控件不能使用的情况,我使用的是flutter版本为1.7.8+hotfix.4,直接打包成AAR作为依赖,就可以直接使用,可能flutter当前的版本已经修复了这个问题:在打包aar的时候,会将其依赖的第三方代码也一起打进aar文件里。
另外,官方-Add Flutter to existing apps 这篇文章里说将来稳定版flutter发布本地aar仓库非常简单。
Flutter应用框架BLoC
纲要:
- 概念
- stream bloc
- bloc框架
参考
- Reactive Programming Streams BLoC
- Reactive Programming Streams BLoC中文版:Flutter-BLoC-第一讲
- Reactive Programming Streams BLoC中文版:Flutter-BLoC-第二讲
- Reactive Programming Streams BLoC中文版:Flutter-BLoC-第三讲
- Bloc框架官方文档
- 谷歌官方视频介绍