CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Flutter 开发入门/课时/Flutter 环境
RawBlame
课时目录12 节

Flutter 开发入门

  1. 01Flutter 环境
  2. 02Dart 语言
  3. 03Widget 体系
  4. 04架构原则
  5. 05状态管理
  6. 06动画
  7. 07网络与本地存储
  8. 08Firebase 集成
  9. 09测试
  10. 10CI/CD 与发布
  11. 11分析与监控
  12. 12综合练习

Flutter 环境

CLI、IDE 与 pub。

30 分钟

Flutter 环境

这一课你将能做到

  1. 在自己的电脑上把 Flutter SDK、Android Studio(或 Xcode)、模拟器全部装好,flutter doctor 全绿
  2. 用 flutter create 创建一个新项目,并在模拟器/真机上跑起来,体验热重载
  3. 说清楚 Flutter 项目的目录结构:lib、pubspec.yaml、android、ios 各自的作用

为什么要学

环境装不好,后面所有课都是白搭。Flutter 环境的坑集中在:SDK 路径、Android 模拟器镜像、Gradle 下载慢、iOS 签名。本节一次性把坑扫干净,让你后面只管写代码。

人话:Flutter 就像一台游戏机,Android Studio / Xcode 是屏幕,模拟器是手柄。把这三件连好,你才能开始玩游戏。

先建立图像

你的代码 (lib/main.dart)
      │
      ▼
Flutter SDK ── dart ── flutter 命令行
      │
      ├────► Android 工具链 (Android SDK + 模拟器/真机)
      └────► iOS 工具链 (Xcode + Simulator,仅 macOS)

跟着做

步骤 1:下载并解压 Flutter SDK

到 <https://docs.flutter.dev/get-started/install> 下载稳定版压缩包。

  • Windows 解压到 C:\flutter(不要含中文/空格/Program Files)
  • macOS/Linux 解压到 ~/flutter

把 flutter/bin 加入环境变量 PATH。Windows:设置 → 环境变量 → Path → 新建 C:\flutter\bin。macOS/Linux:编辑 ~/.zshrc:

export PATH="$HOME/flutter/bin:$PATH"

打开新终端验证:

flutter --version
# 输出 Flutter 3.x.x • channel stable

步骤 2:安装 Android Studio 与 Android SDK

  1. 装 Android Studio(自带 Android SDK、Platform-Tools、模拟器)。
  2. 启动后 SDK Manager 里勾选:Android SDK Platform(最新 API)、Android SDK Build-Tools、Android Emulator、Android SDK Platform-Tools。
  3. 装完打开 Device Manager,创建一个 Pixel 6 / API 34 的模拟器。

接受协议:

flutter doctor --android-licenses
# 一路 y 回车

步骤 3:(仅 macOS)配置 iOS 工具链

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
open -a Simulator   # 启动一次模拟器
sudo gem install cocoapods

步骤 4:跑 doctor,全部打勾

flutter doctor -v

期望输出(关键项全 ✓):

[✓] Flutter (Channel stable, ...)
[✓] Android toolchain
[✓] Xcode (仅 macOS)
[✓] Android Studio
[✓] Connected device

如果某项是 ✗,按 doctor 提示修。最常见的是 Android licenses 没接受、模拟器没启动。

步骤 5:创建并运行第一个项目

flutter create hello_flutter
cd hello_flutter
flutter devices        # 看可用设备
flutter run            # 默认跑第一个设备

也可以指定设备:

flutter run -d emulator-5554   # Android 模拟器
flutter run -d chrome          # 网页(体验热重载很方便)

跑起来后,打开 lib/main.dart,把 'Flutter Demo Home Page' 改成 '你好 Flutter',保存(不重启进程),界面秒变 —— 这就是热重载(Hot Reload)。改不了的状态用 Hot Restart(终端按 R)。

步骤 6:认识项目结构

hello_flutter/
├── lib/                # 你的 Dart 代码,主要战场
│   └── main.dart       # 入口
├── test/               # 单元/Widget 测试
├── android/            # Android 原生壳(签名、权限、图标)
├── ios/                # iOS 原生壳
├── web/                # Web 平台
├── pubspec.yaml        # 依赖、资源、字体声明 ≈ package.json
└── pubspec.lock        # 锁定版本(提交到 git)

加一个依赖试试,在 pubspec.yaml 的 dependencies: 下:

dependencies:
  flutter:
    sdk: flutter
  http: ^1.2.0

保存后 VS Code/Android Studio 会自动 flutter pub get,或者手动跑:

flutter pub get

讲清楚要点

  1. Flutter = SDK + 引擎 + 框架:SDK 含 dart 编译器和 flutter 命令;引擎用 C++ 写,跨平台渲染靠 Skia/Impeller;你用 Dart 写 Widget。
  2. 热重载不是「刷新页面」:它把改动的代码注入正在运行的 Dart VM,保留当前状态。改 build() 才会看到效果;改全局变量、initState 一般要 Hot Restart。
  3. pubspec.yaml 就是包管理:类似 package.json。版本号 ^1.2.0 表示 >=1.2.0 <2.0.0。
  4. doctor 是第一诊断工具:90% 的环境问题 flutter doctor -v 直接告诉你。
  5. Android 模拟器吃内存:开发机建议 16G 内存起步;不够就开真机调试(USB 调试 + flutter devices 能看到)。

你可能会懵的地方

  • 要不要装 VS Code 还是 Android Studio? 都可以写代码,但 Android Studio 必装(因为它带 SDK/模拟器)。日常编辑器任选,VS Code 装 Flutter 插件即可。

  • Windows 能开发 iOS 吗? 不能。iOS 编译依赖 Xcode,必须 macOS。变通方案:Codemagic 云端打包。

  • 国内 Gradle / pub 下载慢? 配镜像:环境变量加 PUB_HOSTED_URL=https://pub.flutter-io.cn 和 FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn。

  • flutter run 卡在 "Running Gradle task 'assembleDebug'..."? 第一次构建要下载 Gradle,等 5-10 分钟正常。可以打开 android/gradle/wrapper/gradle-wrapper.properties 把 distributionUrl 换成腾讯镜像。

  • 模拟器起来了但 flutter devices 看不到? 一般是 adb 冲突。flutter doctor 看 Android toolchain 是否打勾;重启 adb:adb kill-server && adb start-server。

错法对照

错法问题正解
Flutter 装在 C:\Program Files\flutter路径含空格,构建工具链报错装到 C:\flutter 等无空格路径
跳过 flutter doctor --android-licenses第一次跑 Android 直接报 license 错装完 Android SDK 立即执行并全 y
改完代码疯狂重启慢且丢状态默认热重载,结构性改动再 Hot Restart
把 pubspec.lock 加进 .gitignore团队成员依赖版本漂移App 项目要提交 lock,库项目才忽略
用 flutter create . 在含中文的目录包名/路径解析失败项目路径全英文小写

卡点急救

  1. flutter: command not found:PATH 没生效,开新终端;Windows 检查用户变量 vs 系统变量。
  2. Waiting for another flutter command to release the startup lock:删除 <flutter>/bin/cache/lockfile。
  3. 模拟器一直黑屏:进入模拟器设置 → Wipe Data;或删了重建一个,把 Graphics 改为 Software。
  4. iOS 报 CocoaPods not installed:sudo gem install cocoapods && pod setup。
  5. VS Code 找不到设备:底部状态栏点 "No Device" 选一个,再按 F5。

面试常问

  • Flutter 为什么能跨平台? 自带渲染引擎(Skia/Impeller),不依赖原生控件,自己画每一像素。所以 Android/iOS/Web 表现一致。

  • Hot Reload 原理? Dart VM 支持增量编译。改动后只把变化的类和方法以 kernel 文件下发给正在运行的 VM,VM 替换类后调用 build 重建 Widget 树。

  • Flutter 项目里 android/ios 文件夹干嘛的? 原生壳工程。Flutter 代码通过 Platform Channel 与原生互调;签名、权限、启动图标都配置在这两边。

自测三问

  1. flutter doctor 有哪几个关键项必须打勾才能跑 Android 模拟器?
  2. 热重载和热重启有什么区别?各自适用于什么场景?
  3. pubspec.yaml 和 pubspec.lock 的区别?团队项目应该提交哪个?

小结一句话

Flutter 环境的关键是 SDK + Android/iOS 工具链 + 一个能跑的设备,flutter doctor 全绿后就可以专注写代码。

延伸

  • 官方安装文档:<https://docs.flutter.dev/get-started/install>
  • DartPad 在线写 Flutter 代码:<https://dartpad.dev>(不想装环境可以先玩这个)
  • 下一课:Dart 语言,把语法基础打牢再写 Widget。
加载本节练习…
下一课 →Dart 语言