Flutter 开发
欢迎来到 Flutter 开发知识库!
🦋 Flutter 简介
Flutter 是 Google 开源的跨平台 UI 框架,使用 Dart 语言开发,一套代码可以同时构建 iOS、Android、Web、Desktop 应用。Flutter 以其出色的性能、精美的 UI 和快速的开发体验而闻名。
🎯 学习路线
第一阶段:基础入门 (1-2个月)
Dart 语言基础
- 变量、类型、函数
- 类与对象
- 异步编程 (Future/async/await)
Flutter 基础
- Widget 概念
- StatelessWidget vs StatefulWidget
- 常用基础组件
开发环境
- Flutter SDK 安装
- VS Code / Android Studio 配置
- 热重载使用
第二阶段:进阶学习 (2-3个月)
UI 开发
- 布局系统 (Row/Column/Stack)
- Material Design 组件
- 自定义 Widget
状态管理
- Provider
- Riverpod
- Bloc 模式
路由与导航
- Navigator 基础
- 命名路由
- go_router
第三阶段:高级应用 (3-6个月)
网络与数据
- http / dio 网络请求
- JSON 序列化
- 本地存储 (SharedPreferences/Hive)
原生交互
- Platform Channel
- 调用原生功能
- 插件开发
性能优化
- 构建优化
- 列表性能
- 内存管理
🛠️ 开发工具
必备工具
- Flutter SDK - Flutter 开发工具包
- Dart SDK - Dart 语言工具包
- VS Code / Android Studio - IDE
- Flutter DevTools - 调试和性能分析工具
推荐插件
- Flutter / Dart 插件 - 语法高亮和代码补全
- Flutter Widget Snippets - 快速生成代码片段
- Awesome Flutter Snippets - 更多代码片段
✨ Flutter 特点
✅ 核心优势
- 真正的跨平台 - 一套代码,多端运行
- 高性能 - 直接编译为原生代码,60/120 FPS
- 热重载 - 秒级刷新,开发效率极高
- 精美 UI - 内置 Material 和 Cupertino 组件
- 活跃社区 - pub.dev 上有丰富的第三方包
⚠️ 注意事项
- 应用体积较大(首次约 4-8MB)
- 某些平台特性需要原生代码
- 学习曲线中等
📊 与其他跨平台框架对比
| 特性 | Flutter | React Native | Uni-app |
|---|---|---|---|
| 语言 | Dart | JavaScript/TS | Vue.js |
| 性能 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 学习难度 | 🟡 中等 | 🟢 简单 | 🟢 简单 |
| UI 一致性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 社区生态 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 就业需求 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
🏗️ 项目结构
my_app/
├── android/ # Android 原生代码
├── ios/ # iOS 原生代码
├── lib/ # Dart 代码
│ ├── main.dart # 应用入口
│ ├── screens/ # 页面
│ │ ├── home_screen.dart
│ │ └── profile_screen.dart
│ ├── widgets/ # 自定义组件
│ ├── models/ # 数据模型
│ ├── services/ # 业务逻辑
│ ├── providers/ # 状态管理
│ └── utils/ # 工具类
├── test/ # 测试
├── assets/ # 资源文件
│ ├── images/
│ └── fonts/
└── pubspec.yaml # 依赖配置📖 学习资源
官方资源
推荐课程
中文资源
包管理
- pub.dev - Dart 和 Flutter 包仓库
🎯 开始学习
选择一个方向开始深入学习:
💡 学习建议
- 从 Dart 开始 - 先掌握 Dart 语言基础
- 理解 Widget - Widget 是 Flutter 的核心
- 多写代码 - 动手实践比看教程更重要
- 使用热重载 - 充分利用 Flutter 的快速开发特性
- 阅读源码 - pub.dev 上有很多优秀的开源项目
- 关注官方 - Flutter 更新很快,关注官方动态
🚀 第一个 Flutter App
dart
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
useMaterial3: true,
),
home: const CounterScreen(),
);
}
}
class CounterScreen extends StatefulWidget {
const CounterScreen({super.key});
@override
State<CounterScreen> createState() => _CounterScreenState();
}
class _CounterScreenState extends State<CounterScreen> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: const Text('Flutter Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text(
'你好,Flutter!',
style: TextStyle(fontSize: 24),
),
const SizedBox(height: 20),
Text(
'计数:$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: '增加',
child: const Icon(Icons.add),
),
);
}
}运行 flutter run,你的第一个 Flutter App 就完成了!🎉
准备好了吗?让我们开始 Flutter 的跨平台开发之旅!