Flutter:如何为数组中的每个对象初始化一个空列表?

时间:2019-07-11 22:12:52

标签: arrays list flutter default empty-list

嗨,我通常对颤振和编码非常陌生,因此,我的解决方法可能不是最干净的。无论如何:

我将数据存储在Array中,并使用Array-Items构建ListTiles。现在,我想添加将注释写入图块并将输入数据(例如作者名,时间和注释文本)存储到数组/项的可能性。 由于开头没有任何注释,因此每个项目都应以空的注释列表开头。当我为单个项目初始化空列表时,它可以工作,并且可以将TextData添加到列表中。但是因为我的数组很大,所以我无法为每个Item初始化空列表。因此,我正在寻找一种方法来将每个项目的默认值设置为一个空列表,而不将该列表设为const列表,因为我无法将其添加到const列表中。

// DataType to store a single comment with further information

class TextData {
  Text({
    this.text,
    this.author,
    this.time,
});
  final String text;
  final String author;
  final time;
}

//All the Data for one ArrayItem including a List of Comments

class Data {
  Data({
    this.data1,
    this.data2,

    this.comments,
  });

  final String data1;
  final String data2;

// List of comments for one ArrayItem

  List<TextData> comments;
}

我没有收到任何错误消息,如果未初始化或未将其初始化为默认值,则无法添加到列表中。

感谢您的帮助。 预先感谢

2 个答案:

答案 0 :(得分:0)

为什么不只在Data类中编写它呢?

List<TextData> comments = []

代替

List<TextData> comments;

答案 1 :(得分:0)

使注释成为@required参数。这将使您的代码看起来像这样……

// DataType to store a single comment with further information

class TextData {
  Text({
    this.text,
    this.author,
    this.time,
});
  final String text;
  final String author;
  final time;
}

//All the Data for one ArrayItem including a List of Comments

class Data {
  Data({
    this.data1,
    this.data2,

    @required this.comments,
  });

  final String data1;
  final String data2;

// List of comments for one ArrayItem

  List<TextData> comments;
}

至少这样,当您实例化一个新的Data对象时,系统将提示您添加一个空列表。

var data = Data(comments: []);

这是我在Flutter类中所做的,我想确保其中没有一个空列表,这样在向该列表添加任何内容之前不必检查它。