📘Flutter 零基础入门(五):List 列表与遍历
在前面的学习中,我们已经掌握了:
- 变量与基本数据类型
- 条件判断(if / switch)
- 循环(for / while)
但到目前为止,我们处理的都是 单个数据。
在真实开发中,你会经常遇到这样的场景:
- 一个商品列表
- 多个用户信息
- 一组数字或字符串
这时,一个变量已经远远不够,
我们需要一种可以 存储一组数据 的结构 —— List。
一、什么是 List?
List 可以理解为:
一个有顺序的“容器”,用来存放多个值
例如:
- 多个姓名
- 多个数字
- 多条数据记录
二、List 的基本定义方式
1️⃣ 定义一个 List
List numbers = [1, 2, 3, 4, 5];
这表示:
numbers是一个列表- 里面存放了 5 个数字
2️⃣ 指定 List 中的数据类型(推荐)
List<int> numbers = [1, 2, 3];
List<String> names = ['Tom', 'Jack', 'Lucy'];
📌 好处:
- 更安全
- 更清晰
- 编译器能帮你检查错误
三、访问 List 中的元素(索引)
List 中的每一个元素都有一个 索引(index):
- 索引从 0 开始
- 第一个元素索引是 0
List<String> names = ['Tom', 'Jack', 'Lucy'];
print(names[0]); // Tom
print(names[1]); // Jack
⚠️ 注意:
- 最大索引是
长度 - 1 - 越界会报错
四、List 的常用属性和方法
1️⃣ 获取长度
print(names.length);
2️⃣ 添加元素
names.add('Lily');
3️⃣ 修改元素
names[0] = 'Tommy';
4️⃣ 删除元素
names.remove('Jack');
五、为什么 List 常与循环一起使用?
因为 List 通常是:
一组数据,需要逐个处理
如果你这样写:
print(names[0]);
print(names[1]);
print(names[2]);
问题是:
- 写死
- 不灵活
- 无法应对数据变化
这时候,就需要 遍历(循环访问)List。
六、使用 for 循环遍历 List
1️⃣ 最基础的遍历方式
for (int i = 0; i < names.length; i++) {
print(names[i]);
}
执行逻辑:
- i 从 0 开始
- 每次取
names[i] - 直到遍历完整个 List
2️⃣ 遍历并结合字符串插值
for (int i = 0; i < names.length; i++) {
print('第 ${i + 1} 个名字是:${names[i]}');
}
七、for-in 循环(更简洁的遍历方式)
Dart 提供了一种更简单的写法:
for (var name in names) {
print(name);
}
特点:
- 不关心索引
- 语法更简洁
- 非常适合只读取数据的场景
📌 初学建议:
先掌握普通 for,再使用 for-in
八、一个综合示例
List<int> scores = [80, 95, 60, 70];
for (int score in scores) {
if (score >= 90) {
print('$score:优秀');
} else if (score >= 60) {
print('$score:及格');
} else {
print('$score:不及格');
}
}
这个例子同时使用了:
- List
- 循环
- 条件判断
- 字符串插值
九、List 在 Flutter 中的实际意义
在 Flutter 中:
- List 常用于数据源
- ListView / GridView 都依赖 List
- 页面上的“重复 UI”几乎都来自 List
例如(概念层面):
List<String> titles = ['首页', '消息', '我的'];
后续你会学到如何:
用一个 List,生成多个 Widget
十、总结
本篇你已经学会了:
- 什么是 List
- 如何定义和操作 List
- 如何使用循环遍历 List
- List 在 Flutter 中的重要性
你已经迈出了:
从“单个数据” → “一组数据”的关键一步
🔜 下一篇预告
《Flutter 零基础入门(六):Map 键值对与简单数据模型》
下一篇我们将学习:
- 什么是 Map
- 如何用 key-value 描述一条数据
- List + Map 的组合使用
- 为真实业务数据建模打基础
从下一篇开始,你写的代码将越来越接近:
真实 Flutter 项目中的数据结构