到目前为止,我们已经学习了:
·变量与数据类型
·条件判断与循环
·List 和 Map 等数据结构
你可能已经注意到一个现象:
程序能跑了,但代码开始变多、变乱了
例如:
print('开始执行');
print('校验数据');
print('处理数据');
print('结束执行');如果这些逻辑在多个地方都要用,你会怎么办?
复制粘贴 ❌ 正确做法是:函数(Function)

一、什么是函数?
函数可以理解为:
一段被“取了名字的代码”,用于完成某个具体功能
核心作用只有一个:
封装 + 复用
二、为什么要使用函数?
不使用函数的问题:
·重复代码多
·修改困难
·可读性差
使用函数后:
·逻辑清晰
·代码复用
·易维护、易扩展
📌 在 Flutter 项目中,函数是必不可少的基础能力
三、函数的基本定义方式
void sayHello() {
print('Hello Flutter');
}解释:
·void:表示函数不返回值
·sayHello:函数名
·{}:函数体
2️⃣ 调用函数
sayHello();📌 定义函数 ≠ 执行函数 只有调用,函数才会执行
四、带参数的函数
函数可以接收外部传入的数据,这叫做 参数。
void greet(String name) {
print('Hello $name');
}调用方式:
greet('Tom');
greet('Lucy');📌 参数的作用:
让函数变得更灵活
五、多个参数的函数
void introduce(String name, int age) {
print('我叫$name,今年$age岁');
}调用:
introduce('Tom', 18);⚠️ 注意:
·参数顺序要一致
·类型要匹配

六、有返回值的函数
有些函数不只是执行操作,还需要 返回结果。
int add(int a, int b) {
return a + b;
}调用并接收结果:
int result = add(3, 5);
print(result);📌 规则:
·返回值类型要写清楚
·return 后的代码不会再执行
2️⃣ 返回 String 示例
String getUserName() {
return 'Tom';
}七、函数如何“封装逻辑”?
来看一个没有封装的写法:
int price = 100;
int count = 3;
int total = price * count;
print(total);如果多次使用,就会重复。

使用函数封装
int calculateTotal(int price, int count) {
return price * count;
}使用时:
print(calculateTotal(100, 3));
print(calculateTotal(200, 2));📌 这就是 代码封装的意义
八、函数在 List + Map 场景中的应用
void printUser(Map<String, dynamic> user) {
print('姓名:${user['name']},年龄:${user['age']}');
}使用:
List<Map<String, dynamic>> users = [
{'name': 'Tom', 'age': 18},
{'name': 'Lucy', 'age': 20},
];
for (var user in users) {
printUser(user);
}这样做的好处:
·循环更干净
·逻辑更清晰
·后期更好维护
九、函数是 Flutter 的核心基础
在 Flutter 中:
·页面事件是函数
·点击回调是函数
·UI 构建过程也是函数
📌 你现在学的函数知识,将直接用于:
onPressed、build()、自定义 Widget 等
十、总结
本篇你已经学会了:
·什么是函数
·如何定义和调用函数
·函数的参数与返回值
·使用函数封装重复逻辑
你已经完成了从:
“写代码” → “组织代码” 的重要一步
🔜 下一篇预告
《Flutter 零基础入门(八):Dart 类(Class)与对象(Object)》
下一篇我们将学习:
·什么是类
·如何用类描述一个对象
·用类替代 Map,构建真正的数据模型
·为 Flutter 项目结构打基础
从下一篇开始,你将真正进入:
面向对象编程的世界