如何将从Flatter中的Firebase DocumentSnapshot获得的列表中的值复制到新列表并向其中添加值?

如何将从Flatter中的Firebase DocumentSnapshot获得的列表中的值复制到新列表并向其中添加值?,firebase,flutter,dart,Firebase,Flutter,Dart,Create是一个有状态的小部件,它从另一个类接收postDoc快照 class Create extends StatefulWidget { final DocumentSnapshot postDoc; Create({this.postDoc}); @override _CreateState createState() => _CreateState(); } 博士后有一个类型为List的“contributers”字段 我想复制widget.postDoc

Create是一个有状态的小部件,它从另一个类接收postDoc快照

class Create extends StatefulWidget {
  final DocumentSnapshot postDoc;

  Create({this.postDoc});

  @override
  _CreateState createState() => _CreateState();
}
博士后有一个类型为List的“contributers”字段

我想复制widget.postDoc['contributers']中的元素,并在最后添加另一个元素

新列表现在将用作新帖子中的值贡献者字段

我应该如何复制widget.postDoc['contributer']并向其添加元素

我已经试过了

List<dynamic> contributer;
contributer=widget.postDoc['contributers'];
contributer.add(widget.postDoc['username']);

但是贡献者现在是固定长度的,不能添加新元素。

您使用的是固定长度列表,这有利于整体性能,但在您的用例中,您需要一个可扩展的列表。列表=列表

因此,请执行以下操作

List<dynamic> contributor = List();

contributor.addAll(widget.postDoc.data()['contirbutors']);
contributor.add(widget.postDoc.data()['username']);
这是一个可扩展的列表

void main(){

var myList = List();

myList.add(25);
myList.add(63);
myList.add(84);

print(myList);
}

PS:您应该应用最佳实践,为安装编写代码时,您应该将业务逻辑与演示文稿分开。

您使用的是固定长度的列表,这有利于整体性能,但在您的用例中,您需要一个可扩展的列表。列表=列表

因此,请执行以下操作

List<dynamic> contributor = List();

contributor.addAll(widget.postDoc.data()['contirbutors']);
contributor.add(widget.postDoc.data()['username']);
这是一个可扩展的列表

void main(){

var myList = List();

myList.add(25);
myList.add(63);
myList.add(84);

print(myList);
}
PS:您应该应用最佳实践,为安装而编写的代码应该将您的业务逻辑与演示文稿分开。

无法添加到固定长度列表的问题可以很容易地解决,如下所示:

List<dynamic> contributer = List.from(widget.postDoc.data()['contributers']);
contributer.add(widget.postDoc.data()['username']);
List.from返回一个可增长的列表&您可以向其中添加任何元素

文档:

无法添加到固定长度列表的问题可以通过以下方式轻松解决:

List<dynamic> contributer = List.from(widget.postDoc.data()['contributers']);
contributer.add(widget.postDoc.data()['username']);
List.from返回一个可增长的列表&您可以向其中添加任何元素


文档:

List contributer如何具有固定长度?postDoc是DocumentSnapshot,而不是List。postDoc['contributers']是List类型。它显示错误:未处理的异常:不支持的操作:添加到contributer时无法添加到固定长度的列表。请尝试contributer.addAllwidget.postDoc['contributers'];列表贡献者如何具有固定长度?postDoc是DocumentSnapshot,而不是List。postDoc['contributers']是List类型。它显示错误:未处理的异常:不支持的操作:添加到贡献者时无法添加到固定长度的列表。请尝试contributer.addAllwidget.postDoc['contributers'];