📘Flutter 零基础入门(八):Dart 类(Class)与对象(Object)
在前面的学习中,我们已经学会了:
- 使用
List存储一组数据 - 使用
Map描述一条结构化数据 - 使用函数封装逻辑
你现在可能已经写过类似这样的代码:
dart
Map<String, dynamic> user = {
'name': 'Tom',
'age': 18,
};
这在学习阶段完全没问题,但在真实项目中,很快会暴露一些问题:
- key 写错了,编译器发现不了
- 数据结构不清晰
- 不利于维护和扩展
为了解决这些问题,Dart 提供了更强大的工具: 👉 类(Class)与对象(Object)
一、什么是类(Class)?
类可以理解为:
一个"模板"或"蓝图",用来描述一类事物
例如:
- 用户
- 商品
- 订单
它描述的是:
- 这个事物有什么属性
- 这个事物能做什么事情
二、什么是对象(Object)?
对象是:
根据类创建出来的具体实例
类 ≈ 图纸 对象 ≈ 根据图纸造出来的房子
三、为什么要使用类?
相比 Map,类的优势非常明显:
- 结构清晰
- 有类型约束
- 编译期可检查错误
- 更符合真实业务建模
📌 Flutter 项目中几乎一定会用到类
四、定义一个最简单的类
kotlin
class User {
String name;
int age;
User(this.name, this.age);
}
拆解理解:
class User:定义一个类name、age:类的属性User(...):构造函数,用于创建对象
五、创建对象(实例化)
ini
User user = User('Tom', 18);
print(user.name);
print(user.age);
这里:
User是类user是对象
📌 对象通过 . 访问属性
六、类中的方法(行为)
类不仅可以有属性,还可以有方法。
dart
class User {
String name;
int age;
User(this.name, this.age);
void introduce() {
print('我叫$name,今年$age岁');
}
}
调用方法:
ini
User user = User('Tom', 18);
user.introduce();
📌 方法本质上就是:
属于这个类的函数
七、类 vs Map(对比理解)
| 对比项 | Map | Class |
|---|---|---|
| 结构清晰度 | 一般 | 非常清晰 |
| 类型检查 | ❌ | ✅ |
| 自动补全 | 少 | 多 |
| 适合项目 | ❌ | ✅ |
📌 结论:
Map 用于临时数据,Class 用于项目结构
八、List + Class(真实项目结构)
ini
List<User> users = [
User('Tom', 18),
User('Lucy', 20),
];
遍历:
scss
for (var user in users) {
user.introduce();
}
📌 这已经是 Flutter 项目中非常常见的写法了。
九、类是 Flutter 的核心基础
在 Flutter 中:
- 页面是 Widget 类
- StatelessWidget / StatefulWidget 是类
- 页面状态、数据模型都是类
📌 你现在学的内容,将直接用于:
页面开发、数据模型、业务封装
十、总结
本篇你已经学会了:
- 什么是类(Class)
- 什么是对象(Object)
- 如何定义和使用类
- 为什么类比 Map 更适合项目
你已经完成了从:
"数据结构" → "业务建模" 的关键跃迁
🔜 下一篇预告
《Flutter 零基础入门(九):构造函数、命名构造函数与 this 关键字》
下一篇我们将学习:
- 构造函数的更多写法
- 命名构造函数的作用
this的真正含义- 更规范地创建对象
从下一篇开始,你写的 Dart 代码将越来越像:
专业 Flutter 项目中的代码