嗨,我通常对颤振和编码非常陌生,因此,我的解决方法可能不是最干净的。无论如何:
我将数据存储在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;
}
我没有收到任何错误消息,如果未初始化或未将其初始化为默认值,则无法添加到列表中。
感谢您的帮助。 预先感谢
答案 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类中所做的,我想确保其中没有一个空列表,这样在向该列表添加任何内容之前不必检查它。