Flutter 零基础入门(八):Dart 类(Class)与对象(Object)

📘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:定义一个类
  • nameage:类的属性
  • 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 项目中的代码

相关推荐
陈随易20 分钟前
在Finch用了62亿词元,我认为这是新一代Agent工具之神
前端·人工智能·后端
水域安全老周40 分钟前
水趣钓鱼救生衣专利拆解:两级锁紧如何解决落水人衣分离
java·前端·网络
●VON1 小时前
Flutter 鸿蒙插件适配实战:用 clipboard_watcher 0.3.0 监听剪贴板变化
flutter·华为·harmonyos
计算机魔术师1 小时前
Anthropic CEO突然喊踩刹车,OpenAI罕见力挺:AI这辆车不能只踩油门了
前端
wing982 小时前
从codex转战workbuddy使用一周的感受
前端·人工智能·后端
EatFan2 小时前
Java接入支付宝 JSAPI 支付保姆教程(二):流程讲解与前后端代码讲解
前端·spring boot·后端·微信小程序·小程序·uni-app
梦想平凡2 小时前
百游棋牌源代码开发搭建教程(五):房间创建、座位分配与请求幂等实现
前端·javascript·数据库·源代码管理
IT_陈寒2 小时前
Redis的Set操作居然能把我的服务整挂了?
前端·人工智能·后端
计算机魔术师3 小时前
Suno 发布 v6 音乐模型,推出 v6、v6-wild、v6-mini 三个版本
前端
whyweplay3 小时前
elpis : DSL动态组件学习
前端