[英]How do I make the map value a constant in function parameter in dart
为什么 dart 会抱怨“可选参数的默认值必须是常量”。 如何使地图值保持不变
Map<String, int> toastDuration = {
"defaut": 4000,
};
void showToast({
BuildContext context,
String msg,
int msDuration = toastDuration["default"], // Error: The default value of an optional parameter must be constant
bool hidePrev = true,
}) {
....
}
我尝试添加 const 但这不起作用,因为它期望 map 部分是一个类。
int msDuration = const toastDuration["default"],
toastDuration["default"] 不能是常量,因为它是稍后计算的表达式(想想你可以把任何字符串放在大括号中的事实)。 你可以做类似的事情:
const defaultToastDuration = 4000;
Map<String, int> toastDuration = {
"default": defaultToastDuration,
}
void showToast({
BuildContext context,
String msg,
int msDuration = defaultToastDuration,
bool hidePrev = true,
}) {
...
}
正如错误消息所说The default value of an optional parameter must be constant
。 想想如果从toastDuration
删除default
键会发生什么。 您可以直接使用默认值,而不是在此处使用地图。
void showToast({
BuildContext context,
String msg,
int msDuration = 4000,
bool hidePrev = true,
})
原始代码中的另一个问题是,如果将default
键更改为 300,则showToast
将中断,因为默认参数必须是常量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.