繁体   English   中英

如何使地图值成为 dart 函数参数中的常量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM