1、Flutter入门:Flutter发展史、Flutter应用场景、Flutter开发环境搭建
1.1 Flutter的前世今生
聊Flutter之前,我想先说说它的背景。2015年,Google内部启动了一个叫「Sky」的项目。当时移动端开发正处在原生与Hybrid的混战期,React Native刚出来没多久,大家都在找更好的跨平台方案。
我记得第一次看到Flutter的演示,是在2017年的Google I/O大会上。那时候它还是个预览版,但热重载的效果让我眼前一亮。说实话,做原生开发最烦的就是改一行代码等几十秒编译,Flutter这个特性直接戳中了我的痛点。
2018年12月,Flutter 1.0正式发布。嗯,从那时起我就开始把它用在一些内部工具上了。到了2021年,Flutter 2.0宣布支持Web和桌面端,这步棋走得挺大——从一个移动端框架变成了全平台方案。
核心时间线:
- 2015年:Sky项目启动,使用Dart语言
- 2017年:Flutter Alpha发布,支持iOS和Android
- 2018年:Flutter 1.0正式版,成为跨平台主流方案
- 2021年:Flutter 2.0,支持Web、桌面、嵌入式设备
- 2023年:Flutter 3.x,性能优化与生态成熟
为什么Google选Dart?很多人问过我这个问题。说白了,Dart的AOT编译能生成原生机器码,JIT编译又能支持热重载。这种「开发时快,运行时也快」的特性,是Flutter性能优于其他跨平台方案的根本原因。
1.2 Flutter到底能干什么
你可能听过「一套代码,多端运行」这句话。但实际项目中,我得告诉你——不是所有场景都适合Flutter。
Flutter最擅长的领域:
- 移动端App:这是Flutter的主战场。我在项目中做过电商App、社交应用、企业管理系统,体验上基本能接近原生。
- 企业级内部工具:比如后台管理、数据看板、审批流程。这类应用对性能要求没那么苛刻,但开发效率要求高,Flutter很合适。
- 跨平台UI组件库:如果你公司有多个端(iOS、Android、Web),用Flutter统一UI层,能省不少人力。
不太建议用Flutter的场景:
- 重度3D游戏(还是用Unity吧)
- 对原生平台特性依赖极强的应用(比如调用底层硬件)
- 团队没有Dart基础,且项目周期极短
我的经验: 如果你团队有3个以上前端开发,且需要同时维护iOS和Android两个版本,Flutter能节省至少40%的开发时间。但前提是——你得接受Dart语言的学习成本。
1.3 开发环境搭建——手把手来
这部分我踩过不少坑,直接说最稳的流程。
1.3.1 安装Flutter SDK
去官网下载对应系统的SDK。我个人习惯用macOS,所以以Mac为例:
# 下载Flutter SDK(建议用git clone,方便后续更新)
git clone https://github.com/flutter/flutter.git -b stable
# 配置环境变量(加到~/.zshrc或~/.bash_profile)
export PATH="$PATH:`pwd`/flutter/bin"
# 验证安装
flutter doctor
flutter doctor这个命令会检查你的环境缺什么。我第一次跑的时候,它提示我缺少Android Studio和Xcode。嗯,别慌,一个个装就行。
避坑指南: 我曾经因为网络问题卡在「Downloading Dart SDK」这一步。解决方案是设置镜像源:
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
国内开发者建议加上这两行,不然下载依赖能等到你怀疑人生。
1.3.2 安装IDE与插件
我推荐用Android Studio或VS Code。个人更倾向VS Code,轻量、启动快。
| IDE | 插件名称 | 作用 |
|---|---|---|
| VS Code | Flutter | 代码补全、热重载、调试 |
| VS Code | Dart | Dart语言支持 |
| Android Studio | Flutter插件 | 项目模板、设备管理 |
装完插件后,重启IDE。然后按 Ctrl+Shift+P(Mac是 Cmd+Shift+P),输入「Flutter: New Project」,就能创建第一个项目了。
1.3.3 创建并运行第一个项目
flutter create my_first_app
cd my_first_app
flutter run
如果你连了模拟器或真机,应该能看到一个默认的计数器App。这时候试试改一下 lib/main.dart 里的文字,保存后看效果——热重载生效了,对吧?
小技巧: 第一次运行 flutter run 会比较慢,因为要下载依赖和编译。之后热重载就快多了,基本秒级。我开发时习惯开着两个终端:一个跑 flutter run,另一个跑 dart analyze 做静态检查。
1.4 环境验证与常见问题
跑完 flutter doctor 后,理想状态是看到这样的输出:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.x.x)
[✓] Android toolchain
[✓] Xcode
[✓] Chrome
[✓] Android Studio
[✓] VS Code
[✓] Connected device
如果某个项前面是 [✗],点开看具体提示。我遇到过最多的问题是:
- Android licenses not accepted:运行
flutter doctor --android-licenses同意协议 - Xcode未安装:去App Store下载,或者装Command Line Tools
- 模拟器无法启动:检查一下Android Studio里有没有创建虚拟设备
注意: Flutter版本更新很快,不同版本之间API可能有变化。我建议团队统一使用stable channel,并且把版本号写进项目的 pubspec.yaml 里。不然某天同事拉代码发现跑不起来,那场面...你懂的。
1.5 本章小结
这一章我们聊了Flutter从Sky项目到3.x的发展历程,也分析了它适合和不适合的场景。环境搭建部分,我尽量把踩过的坑都标出来了。
说白了,Flutter不是银弹,但它在跨平台UI开发这个领域,确实做到了「一套代码,多端一致」。下一章我们会开始写真正的项目代码,到时候你会感受到Flutter的威力。
嗯,先把环境搭好,别急着往下看。我见过太多人跳过环境搭建直接写代码,结果后面调试时各种报错,反而更浪费时间。
课后任务:
- 完成Flutter环境搭建,确保
flutter doctor全部通过 - 创建一个新项目,修改默认App的文字内容
- 尝试在模拟器和真机上分别运行一次
公众号:蓝海资料掘金营,微信deep3321