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