Flutter 零基础入门(六):Map 键值对与简单数据模型

24 阅读3分钟

📘Flutter 零基础入门(六):Map 键值对与简单数据模型

公众号版

在上一篇中,我们学习了 List

  • 用来存储一组数据
  • 常配合循环进行遍历
  • 是 Flutter 列表 UI 的基础

但很快你会发现一个问题:

List 只能存“值”,
却无法清晰地表达“这是什么数据”

例如:

['Tom', 18, true]

这三个值分别代表什么?

  • 名字?
  • 年龄?
  • 是否登录?

仅靠 List,很难看懂。

这时,我们就需要 Map


一、什么是 Map?

Map 可以理解为:

一组「键 - 值(key - value)」的数据

每一份数据都有:

  • 一个 key(名字)
  • 一个 value(值)

就像一张信息表:

keyvalue
nameTom
age18
isViptrue

二、Map 的基本定义方式

1️⃣ 定义一个 Map

Map user = {
  'name': 'Tom',
  'age': 18,
  'isVip': true
};

含义非常直观:

  • name 对应名字
  • age 对应年龄
  • isVip 对应状态

2️⃣ 指定 key 和 value 类型(推荐)

Map<String, dynamic> user = {
  'name': 'Tom',
  'age': 18,
  'isVip': true
};

解释:

  • key 是 String
  • value 可以是任意类型(dynamic)

📌 这是 Flutter 项目中最常见的写法


三、访问 Map 中的数据

通过 key 来访问 value:

print(user['name']); // Tom
print(user['age']);  // 18

📌 注意:

  • key 不存在时,返回 null
  • Map 没有“索引”的概念

四、修改和操作 Map

1️⃣ 修改已有数据

user['age'] = 20;

2️⃣ 新增一条数据

user['city'] = 'Beijing';

3️⃣ 删除数据

user.remove('isVip');

五、为什么 Map 经常和 List 一起使用?

在真实业务中,常见的数据结构是:

List

例如:

  • 用户列表
  • 商品列表
  • 消息列表

示例:用户列表

List<Map<String, dynamic>> users = [
  {
    'name': 'Tom',
    'age': 18,
  },
  {
    'name': 'Lucy',
    'age': 20,
  }
];

这里表示:

  • 一个用户列表(List)
  • 每个用户是一条 Map

六、遍历 List + Map(真实开发写法)

for (var user in users) {
  print('姓名:${user['name']},年龄:${user['age']}');
}

📌 你会发现:

  • List 决定“有多少条数据”
  • Map 决定“每条数据有什么字段”

七、Map 就是“简单数据模型”

在 Flutter 项目中,Map 通常用于:

  • 模拟接口返回的数据
  • 临时存储一条业务数据
  • 构建简单数据模型

例如:

Map product = {
  'title': 'iPhone',
  'price': 5999,
  'inStock': true
};

这已经非常接近真实项目中的数据结构了。


八、一个综合示例

List<Map<String, dynamic>> products = [
  {'name': 'iPhone', 'price': 5999},
  {'name': 'iPad', 'price': 3999},
];

for (var product in products) {
  print('${product['name']} 的价格是 ¥${product['price']}');
}

这个例子用到了:

  • List
  • Map
  • 循环
  • 字符串插值

九、Map 在 Flutter UI 中的意义

在 Flutter 中:

  • 页面展示的数据通常来自 Map
  • 接口返回的数据几乎都是 Map / JSON
  • Map 是学习 Model 类 的前置知识

📌 后续你会学到:

如何把 Map 变成真正的 Dart 类


十、总结

本篇你已经学会了:

  • 什么是 Map
  • Map 与 List 的区别
  • List + Map 的组合使用
  • 使用 Map 描述一条完整数据

你已经完成了从:

“零散数据” → “结构化数据” 的重要跃迁


🔜 下一篇预告

《Flutter 零基础入门(七):函数(Function)与代码封装》

下一篇我们将学习:

  • 什么是函数
  • 如何封装重复逻辑
  • 函数的参数与返回值
  • 为后续 Widget 抽离逻辑做准备

从下一篇开始,你将真正学会:

写“可复用”的代码