跳到主要内容

flutter基础语法:方法

1. 定义

 作为一种面向对象语言,Dart 里方法也是对象,也有类型。Dart 里用Function表示方法类型,方法类型可以作为参数、返回值等。例如:

Function functionGenerate(Function t) {
return (String s) {
return Function.apply(t, [s]) + s;
};
}

String stringOri(String s) {
return "ori" + s;
}

void main() {
print(functionGenerate(stringOri)("123"));
}

 上面代码里,functionGenerate的入参是一个方法,返回值也是一个方法。其中返回值的方法的参数是String。代码执行流程如下:

  1. Function.apply(t,[s])执行stringOri(s),返回ori123
  2. 执行+ s,输出ori123123

2. 参数

DartFunction的参数有三种,第一种是 required positional parameters,第二种是 named parameters ,第三种是 optional positional 。例如:

int square(int width, int height) {
return width * height;
}

 这里的widthheight属于 required positional parametersrequired positional parameters 后面可以跟 named parameters 或者 optional positional parameters (不能同时)。例如:

int volumn(int length, int width, {int height = 1}) {
return length * width * height;
}

void main() {
print(volumn(4, 5));
print(volumn(4, 5, height: 2));
}

 上面例子中,{}表示 named parametersnamed parameters 默认是可选的,当然也可以在参数声明处加上required,变成必选参数,此时下面代码无法通过编译。

int volumn(int length, int width, {required int height}) {
return length * width * height;
}

void main() {
print(volumn(4, 5)); //无法通过编译
print(volumn(4, 5, height: 2));
}

optional positional parameters 使用[]标识,例如:

int volumn(int length, int width, [int height = 1]) {
return length * width * height;
}

void main() {
print(volumn(4, 5));
print(volumn(4, 5, 2));
}

 如果参数声明时没有使用?表示参数可为空,根据 null safety 的要求,必须为参数指定默认值。例如上面的int height=1,下面是更多默认值示例。

void doStuff(
{List<int> list = const [1, 2, 3],
Map<String, String> gifts = const {
'first': 'paper',
'second': 'cotton',
'third': 'leather'
}}) {
print('list: $list');
print('gifts: $gifts');
}

3. main方法

 每一个应用必须有一个顶层的 main 方法,它是这个应用的入口。 main 方法的返回值为void,可选参数是List<String>

void main() {
print('Hello, World!');
}

4. 匿名方法

Dart 支持匿名方法,你可以将匿名方法赋值给变量,通过变量使用匿名方法。例如:

void main() {
var anonymous = (String s) => s.toUpperCase();
print(anonymous("hello flutter"));
}

署名-非商业性使用-禁止演绎 4.0 国际