对于入门 Flutter 开发(含 Flutter for OpenHarmony),Dart 语言 是基础,Flutter 组件、布局、状态管理是核心。本文用 "表格归纳 + 极简代码" 的形式,帮你快速抓重点、少踩坑,高效打通入门关键环节。
Dart 语言基础
变量与数据类型
- Dart 的基本数据类型:int、double、String、bool、List、Map
- 变量的声明与初始化:var、final、const 的区别
- 类型推断与显式类型声明
控制流与函数
- 条件语句:if-else、switch-case
- 循环结构:for、while、do-while
- 函数的定义与调用:命名参数、可选参数、默认参数
- 匿名函数与高阶函数
面向对象编程
- 类与对象:属性、方法、构造函数
- 继承与多态:extends、implements
- 抽象类与接口
- 混入(Mixin)的使用
异步编程
- Future 与 async/await
- Stream 与事件流处理
- 错误处理:try-catch-finally
Flutter 框架核心
Widget 基础
- StatelessWidget 与 StatefulWidget 的区别
- 常用基础 Widget:Text、Image、Container、Row、Column
- 布局 Widget:Stack、Expanded、Flexible
状态管理
- setState 的局部状态管理
- Provider 的状态共享
- Riverpod 的进阶状态管理
- BLoC 模式与 Cubit
导航与路由
- 基本路由跳转:Navigator.push 与 Navigator.pop
- 命名路由的配置与使用
- 路由传参与返回值处理
网络与数据持久化
- HTTP 请求:Dio 或 http 包的使用
- JSON 序列化与反序列化
- 本地存储:shared_preferences 与 sqflite
实战项目开发
UI 构建技巧
- 自定义 Widget 的设计与复用
- 响应式布局:MediaQuery 与 LayoutBuilder
- 主题与样式:ThemeData 的使用
性能优化
- Widget 重建的优化:const 与 Key
- 图片加载优化:cached_network_image
- 列表性能优化:ListView.builder
调试与测试
- Flutter 调试工具:DevTools
- 单元测试与 Widget 测试
- 集成测试与 Golden 测试
发布与部署
- Android 应用打包与签名
- iOS 应用上架流程
- Web 与桌面端的编译与发布
Dart 语言基础
变量与数据类型
- Dart 的基本数据类型:int、double、String、bool、List、Map
- 变量的声明与初始化:var、final、const 的区别
- 类型推断与显式类型声明
控制流与函数
- 条件语句:if-else、switch-case
- 循环结构:for、while、do-while
- 函数的定义与调用:命名参数、可选参数、默认参数
- 匿名函数与高阶函数
面向对象编程
- 类与对象:属性、方法、构造函数
- 继承与多态:extends、implements
- 抽象类与接口
- 混入(Mixin)的使用
异步编程
- Future 与 async/await
- Stream 与事件流处理
- 错误处理:try-catch-finally
Flutter 框架核心
Widget 基础
- StatelessWidget 与 StatefulWidget 的区别
- 常用基础 Widget:Text、Image、Container、Row、Column
- 布局 Widget:Stack、Expanded、Flexible
状态管理
- setState 的局部状态管理
- Provider 的状态共享
- Riverpod 的进阶状态管理
- BLoC 模式与 Cubit
导航与路由
- 基本路由跳转:Navigator.push 与 Navigator.pop
- 命名路由的配置与使用
- 路由传参与返回值处理
网络与数据持久化
- HTTP 请求:Dio 或 http 包的使用
- JSON 序列化与反序列化
- 本地存储:shared_preferences 与 sqflite
实战项目开发
UI 构建技巧
- 自定义 Widget 的设计与复用
- 响应式布局:MediaQuery 与 LayoutBuilder
- 主题与样式:ThemeData 的使用
性能优化
- Widget 重建的优化:const 与 Key
- 图片加载优化:cached_network_image
- 列表性能优化:ListView.builder
调试与测试
- Flutter 调试工具:DevTools
- 单元测试与 Widget 测试
- 集成测试与 Golden 测试
发布与部署
- Android 应用打包与签名
- iOS 应用上架流程
- Web 与桌面端的编译与发布
一、Dart 语言:Flutter 的 "编程基石"
Dart 语法简洁、贴近主流语言,重点掌握 "基础语法 + 核心特性",无需死记硬背。
1. 核心语法速查表
| 知识点 | 关键说明 | 极简示例代码 |
|---|---|---|
| 变量声明 | var(类型推断)、final(不可变)、const(常量) | var name = "Flutter"; final age = 25; const pi = 3.14; |
| 常用数据类型 | 字符串、列表、映射(键值对) | String msg = "Hello"; List<int> nums = [1,2,3]; Map<String, int> user = {"id":1}; |
| 函数简写 | 箭头函数(单表达式) | int add(int a, int b) => a + b; |
| 面向对象 | 类、继承、构造函数 | class Person {String name; Person(this.name); void sayHi() => print(name);} |
| 异步编程 | Future(异步结果)+ async/await(简化语法) | Future<String> fetchData() async => await Future.delayed(Duration(seconds:2), ()=>"数据"); |
| 空安全 | ?(可空)、??(默认值)、!(非空断言) | String? addr; String showAddr = addr ?? "未知地址"; |
2. 开发高频注意点
- Dart 是强类型语言 ,但支持类型推断,推荐用
var简化代码; - 异步操作必须用
async/await包裹,否则会直接返回Future对象(而非真实结果); - 空安全是 Dart 2.12+ 核心特性,避免空指针异常,尽量少用
!断言(风险高)。
二、Flutter 基础组件:UI 开发的 "积木块"
Flutter 一切皆组件,分为 "无状态(静态)" 和 "有状态(动态)" 两类,以下是实战中最常用的组件。
1. 常用组件速查表
| 组件类型 | 组件名称 | 核心作用 | 极简示例代码 |
|---|---|---|---|
| 文本展示 | Text | 显示文字,支持样式配置 | Text("Flutter组件", style: TextStyle(fontSize:18, color: Colors.blue)) |
| 图标 | Icon | 显示系统 / 自定义图标 | Icon(Icons.favorite, color: Colors.red, size:30) |
| 按钮 | ElevatedButton | 带背景色按钮(最常用) | ElevatedButton(onPressed: ()=>print("点击"), child: Text("确认")) |
| 图片 | Image.asset/network | 加载本地 / 网络图片 | Image.network("https://picsum.photos/200", width:200) |
| 输入框 | TextField | 接收用户输入(表单必备) | TextField(decoration: InputDecoration(hintText: "请输入用户名")) |
| 列表项 | ListTile | 快速构建列表条目(左侧图标 + 标题 + 右侧箭头) | ListTile(leading: Icon(Icons.list), title: Text("列表项"), trailing: Icon(Icons.arrow_forward)) |
| 间距 | SizedBox | 控制组件间距(替代 margin/padding 简化布局) | SizedBox(height:10)(垂直间距 10) |
2. 组件核心分类
总结
本文核心是用 "表格 + 极简代码" 帮你快速掌握关键知识点,重点记住 3 点:
-
StatelessWidget(无状态组件) :UI 不随数据变化(如静态文本、图标),代码简单:
class StaticWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Text("静态文本"); // 无法修改,除非重新创建组件 } }StatefulWidget(有状态组件) :UI 随数据变化(如计数器、输入框),需配合状态管理

3. 状态管理核心原则
-
简单场景用
setState(优先),避免过度设计; -
多组件共享状态用
InheritedWidget(入门级),复杂场景后续再学 Provider/Bloc(进阶); -
状态尽量 "局部化",能放在子组件的状态,就不放在父组件(减少不必要的刷新)。
-
Dart 重点抓 变量 / 函数 / 异步 / 空安全,是 Flutter 开发的基础;
-
Flutter 组件优先掌握 Text/Button/TextField/ListTile ,布局聚焦 Row/Column/Container/ListView,满足 80% 开发需求;
-
状态管理入门用 setState(单组件)+ InheritedWidget(简单共享),无需一开始学习复杂框架。