01_环境搭建与项目结构
Flutter 开发环境搭建和项目结构介绍
Flutter 环境安装、第一个项目创建、项目目录结构解析。
安装 Flutter SDK
# macOS — 推荐用 Homebrew
brew install --cask flutter
# 或手动下载
git clone https://github.com/flutter/flutter.git -b stable
# 将 flutter/bin 目录加入 PATH(写入 ~/.zshrc 或 ~/.bashrc)
export PATH="$PATH:/path/to/flutter/bin"
# Windows — 下载 SDK zip 解压,将 bin 目录加入系统 PATH
验证环境
flutter doctor
输出示例(全部 ✓ 才算完整):
[✓] Flutter (Channel stable, 3.x.x)
[✓] Android toolchain
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] VS Code (version 1.x.x)
[✓] Connected device (2 available)
推荐 VS Code 插件
| 插件 | 用途 |
|---|---|
| Flutter | 语法高亮、补全、调试、Hot Reload |
| Dart | Dart 语言支持(Flutter 插件自动安装) |
| Pubspec Assist | 快速搜索并添加 pub 包 |
| Flutter Widget Snippets | 常用 Widget 代码片段 |
创建第一个项目
# 创建新项目
flutter create my_app
cd my_app
# 运行(自动检测连接的设备/模拟器)
flutter run
# 指定目标平台
flutter run -d chrome # Web
flutter run -d ios # iOS 模拟器
flutter run -d android # Android 模拟器
Hot Reload vs Hot Restart(开发时常用):
| 快捷键 | 功能 | 类比 Web |
|---|---|---|
r |
Hot Reload — 热更新 UI,保留状态 | HMR |
R |
Hot Restart — 完全重启,清除状态 | 重新刷新页面 |
q |
退出 | — |
项目目录结构
my_app/
├── lib/ ← 主要代码目录(等同于 src/)
│ ├── main.dart ← 入口文件(等同于 main.js / index.js)
│ ├── pages/ ← 页面组件
│ ├── widgets/ ← 可复用组件
│ ├── models/ ← 数据模型(类型定义)
│ ├── services/ ← 网络/业务服务
│ └── utils/ ← 工具函数
├── assets/ ← 静态资源
│ ├── images/
│ └── fonts/
├── test/ ← 测试文件
├── android/ ← Android 原生代码
├── ios/ ← iOS 原生代码
├── web/ ← Web 平台入口
└── pubspec.yaml ← 包管理文件(等同于 package.json)
pubspec.yaml 详解
name: my_app
description: A new Flutter project.
version: 1.0.0+1 # 版本号+构建号(发布到应用商店时用)
environment:
sdk: '>=3.0.0 <4.0.0' # Dart SDK 版本要求
dependencies: # 运行时依赖(类比 package.json dependencies)
flutter:
sdk: flutter
http: ^1.1.0
provider: ^6.1.0
shared_preferences: ^2.2.0
dev_dependencies: # 开发依赖(类比 devDependencies)
flutter_test:
sdk: flutter
flutter_lints: ^3.0.0
flutter:
uses-material-design: true # 使用 Material 图标库
assets: # 注册静态资源(必须声明才能在代码中使用!)
- assets/images/
- assets/data/config.json
fonts: # 注册自定义字体
- family: MyFont
fonts:
- asset: assets/fonts/MyFont-Regular.ttf
- asset: assets/fonts/MyFont-Bold.ttf
weight: 700
# 安装依赖(类似 npm install)
flutter pub get
# 添加新包(类似 npm install xxx)
flutter pub add http
# 升级依赖
flutter pub upgrade
main.dart 入口文件
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp()); // 类似 ReactDOM.render() 或 createApp().mount()
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp( // 应用根容器,提供主题、路由、国际化等能力
title: 'My App',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
useMaterial3: true,
),
home: const HomePage(),
);
}
}