如何将默认参数分配给 dart 中 map 参数旁边的函数
How to assign a default parameter to a function aside of map parameter in dart
知道如何将默认参数分配给 dart 中除 Map
参数之外的函数吗?
static Future functionName(
bool isDone,
[
Map<String, String> params,
]
) async {
....
}
请注意,如果我输入 functionName([...],{bool isDone = false})
,在我删除 [...],
之前它不会起作用
一个朋友帮我解决了这个问题,发现函数参数可以采用默认值,必须在 [] 或 {} 中给出,所以我们是这样传递它的:
static Future functionName(
[
Map<String, String> params,
bool isDone = false,
]
) async {
....
}
并这样称呼它:
functionName(
{
'key1': value1,
'key2': value2,
...
},
true,
);
如果您希望 isDone
具有默认值,这意味着它需要成为一个 可选 参数。您的函数有一个现有的可选 positional 参数 (params
) 和 Dart currently does not allow mixing optional positional parameters with optional named parameters。因此 isDone
是可选的,它也必须是位置的。为了避免破坏现有的调用者,它应该保留第一个参数:
static Future functionName([
bool isDone = false,
Map<String, String>? params, // Remove the `?` if you don't enable null-safety.
]) async {
....
}
然后您可以像以前那样调用它:
functionName(
true,
{
'key1': value1,
'key2': value2,
...
},
);
此代码与现有代码之间的唯一区别在于,您现在可以直接调用函数 functionName()
。如果您希望调用者能够使用 params
但 而不是 使用 isDone
调用您的函数,那么这将是一个重大更改(您需要更新所有调用者),并且需要重新排序参数或将参数更改为可选的 named 参数。
知道如何将默认参数分配给 dart 中除 Map
参数之外的函数吗?
static Future functionName(
bool isDone,
[
Map<String, String> params,
]
) async {
....
}
请注意,如果我输入 functionName([...],{bool isDone = false})
,在我删除 [...],
一个朋友帮我解决了这个问题,发现函数参数可以采用默认值,必须在 [] 或 {} 中给出,所以我们是这样传递它的:
static Future functionName(
[
Map<String, String> params,
bool isDone = false,
]
) async {
....
}
并这样称呼它:
functionName(
{
'key1': value1,
'key2': value2,
...
},
true,
);
如果您希望 isDone
具有默认值,这意味着它需要成为一个 可选 参数。您的函数有一个现有的可选 positional 参数 (params
) 和 Dart currently does not allow mixing optional positional parameters with optional named parameters。因此 isDone
是可选的,它也必须是位置的。为了避免破坏现有的调用者,它应该保留第一个参数:
static Future functionName([
bool isDone = false,
Map<String, String>? params, // Remove the `?` if you don't enable null-safety.
]) async {
....
}
然后您可以像以前那样调用它:
functionName(
true,
{
'key1': value1,
'key2': value2,
...
},
);
此代码与现有代码之间的唯一区别在于,您现在可以直接调用函数 functionName()
。如果您希望调用者能够使用 params
但 而不是 使用 isDone
调用您的函数,那么这将是一个重大更改(您需要更新所有调用者),并且需要重新排序参数或将参数更改为可选的 named 参数。