[英]Dart: how to create an empty list as a default parameter
如果沒有分配任何內容,我有多個列表默認情況下需要為空。 但我得到這個錯誤:
class Example {
List<String> myFirstList;
List<String> mySecondList;
Example({
this.myFirstList = []; // <-- Error: default value must be constant
this.mySecondList = [];
});
}
但是當然,如果我讓它保持不變,我以后就不能改變它了:
Example({
this.myFirstList = const [];
this.mySecondList = const [];
});
...
Example().myFirstList.add("foo"); // <-- Error: Unsupported operation: add (because it's constant)
我找到了一種這樣做的方法,但是我怎樣才能對多個列表做同樣的事情:
class Example {
List<String> myFirstList;
List<String> mySecondList;
Example({
List<String> myFirstList;
List<String> mySecondList;
}) : myFirstList = myFirstList ?? []; // <-- How can I do this with multiple lists?
}
class Example {
List<String> myFirstList;
List<String> mySecondList;
Example({
List<String> myFirstList,
List<String> mySecondList,
}) : myFirstList = myFirstList ?? [],
mySecondList = mySecondList ?? [];
}
擴展 YoBo 的答案(因為我無法對此發表評論)
請注意,啟用 null-safety 后,您必須添加?
到構造函數中的字段,即使 class 成員被標記為非空;
class Example {
List<String> myFirstList;
List<String> mySecondList;
Example({
List<String>? myFirstList,
List<String>? mySecondList,
}) : myFirstList = myFirstList ?? [],
mySecondList = mySecondList ?? [];
}
在構造函數中看到您將可選參數標記為可為空(在初始化默認為空時未指定),然后 null 感知運算符??
在初始化程序部分可以做這件事並在需要時創建一個空列表。
class Example {
List<String> myFirstList;
List<String> mySecondList;
Example({
List<String> myFirstList,
List<String> mySecondList,
}) : myFirstList = myFirstList ?? [],
mySecondList = mySecondList ?? [];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.