Dart 是一个面向对象的语言, 所以函数也是对象, 函数属于 Function 对象, 函数可以像参数一样传递给其他函数, 这样便于做回调处理;
一. 指定返回值的函数
- // 判断两个字符串是否相等
- bool isEqual(String name1,String name2){
- return name1 == name2;
- }
- print(isEqual('张三','李四'));
- // 打印结果: false
上面的示例我们指定了参数的类型, 在不确定参数的类型的情况下, 我们的参数可以用 dynamic,object 或 var 来接收参数
- // 判断两个字符串是否相等
- bool isEqual(dynamic name1,var name2){
- return name1 == name2;
- }
- print(isEqual('张三','李四'));
- // 打印结果: false
二. 不指定返回值的函数
- // 判断两个字符串是否相等
- isEqual(String name1,String name2){
- return name1 == name2;
- }
- print(isEqual('张三','李四'));
- // 打印结果: false
- // 打印文本
- isEqual(dynamic name1,object name2){
- var result = '$name1 和 $name2 的名字是否相同';
- if(name1 == name2){
- result = '$name1 和 $name2 的名字不同';
- }else{
- result = '$name1 和 $name2 的名字相同';
- }
- return result;
- }
- print(isEqual('张三','李四'));
- // 打印结果: 张三和李四的名字不同
三. 如果函数里面只有一个表达式, 则可以这样简写
void printSth(String content) => print('hello word');
四. 可选参数
一个函数可以有两种参数: 必须的和可选的, 必须参数要放在前面, 可选参数 (即可以不传) 要放在后面;
可选参数又分为两种: 位置参数和命名参数, 两种参数都可以设置默认值, 如果没有设置默认值, 则默认值为 null;
1. 可选的命名参数
定义一个函数, 使用 {String param1,String param2,...........} 指定命名参数, 在调用方法的时候, 需要指出你要给哪个参数进行传值, 如:
(1)无默认值例子:
- void printSth(String param1,{
- String param2,String param3
- }) => print(param1+'让'+param2+'打'+param3);
- printSth('张三',param2:'李四',param3:'王五');
- // 打印结果: 张三让李四打王五
- void printSth(String param1,{
- String param2,String param3
- }) => print(param1+'让'+param2+'打'+param3);
- printSth('张三',param2:'李四');
- // 打印结果: 张三让李四打 null
这里我们可以看到必须参数和可选的命名参数的区别, 必须参数直接传值, 可选的命名参数需要指定参数名进行传值, 如果没有传值, 则默认值为 null;
(2)有默认值的例子
- void printSth(String param1,{
- String param2,String param3:'王五'
- }) => print(param1+'让'+param2+'打'+param3);
- printSth('张三',param2:'李四');
- // 打印结果: 张三让李四打王五
2. 可选的位置参数
与可选的命名参数不同, 可选的位置参数需要通过 [] 将参数包裹起来, 就能标识成位置参数
(1)没有默认值的例子
- void printSth(String param1,[String param2,String param3]) => print(param1+'让'+param2+'打'+param3);
- printSth('张三','李四','王五');
- // 打印结果: 张三让李四打王五
- void printSth(String param1,[String param2,String param3]) => print(param1+'让'+param2+'打'+param3);
- printSth('张三','李四');
- // 打印结果: 张三让李四打 null
(2)有默认值的例子
- void printSth(String param1,[String param2,String param3 = '王五']) => print(param1+'让'+param2+'打'+param3);
- printSth('张三','李四');
- // 打印结果: 张三让李四打王五
总结一下命名参数和位置参数
命名参数: 使用 {} 将参数包裹起来, 传参时需要指定参数名, 默认值使用 ":" 指定;
位置参数: 使用 [] 将参数包裹起来, 传参时不需要指定参数名, 按位排, 默认值使用 "=" 指定;
五. main 函数
Flutter 应用程序必须要有一个 main 函数, 和其他语言一样作为程序的入口函数, 下面的代码表示应用要启动 MyApp 类;
void main() => runApp(MyApp());
六. 函数的返回值
在 Dart 语言中, 函数的返回值有如下特点:
1. 所有的函数都会有返回值;
2. 如果没有指定函数的返回值, 则默认的返回值是 null;
3. 没有返回值的函数, 系统会在最后添加隐式的 return 语句;
来源: https://www.cnblogs.com/upwgh/p/11167393.html