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 CodeFlutter代码补全、热重载、调试
VS CodeDartDart语言支持
Android StudioFlutter插件项目模板、设备管理

装完插件后,重启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的威力。

嗯,先把环境搭好,别急着往下看。我见过太多人跳过环境搭建直接写代码,结果后面调试时各种报错,反而更浪费时间。

课后任务:

  1. 完成Flutter环境搭建,确保 flutter doctor 全部通过
  2. 创建一个新项目,修改默认App的文字内容
  3. 尝试在模拟器和真机上分别运行一次

公众号:蓝海资料掘金营,微信deep3321