簡體   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