默认参数值
默认值只能是编译时常量 。在定义方法的时候,可以用 = 来定义可选参数的默认值。 如果没有提供默认值,那么默认值为 null。
下面是设置可选参数默认值示例:
/// 设置 [bold] 和 [hidden] 标志 ...
void enableFlags({bool bold = false, bool hidden = false}) {...}
// bold 值为 true; hidden 值为 false.
enableFlags(bold: true);
不推荐:旧版本代码中起初命名参数只支持 冒号(:) , 不是 = 来设置参数默认值。 但是这种支持可能会被弃用。所以这边建议用 = 指定默认值。
下边示例演示了怎样为位置参数设置默认值:
String say(String from, String msg,
[String device = 'carrier pigeon', String mood]) {
var result = '$from says $msg';
if (device != null) {
result = '$result with a $device';
}
if (mood != null) {
result = '$result (in a $mood mood)';
}
return result;
}
assert(say('Bob', 'Howdy') ==
'Bob says Howdy with a carrier pigeon');
l 下面的示例定义了一个方法 doStuff(), 且分别指定参数 list 和 gifts 的默认值。ist 或 map 可以作为默认值传递。
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');
}