簡體   English   中英

Dart:如何創建一個空列表作為默認參數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM