我试图添加到List中,这会导致Unsupported operation: Cannot add to an unmodifiable list
但是消息列表不是最终的,为什么我不能添加项目呢?
class Chat {
final String uuid;
final User receiverUser;
List<Message> messages;
Chat({this.uuid, this.receiverUser, this.messages = const []});
}在我的提供者中,我有一个发送消息的方法
void send(String receiverUUID) async {
Message message = Message(
message: messageController.text,
receiverUUID: receiverUUID,
timestamp: DateTime.now());
await _messageApi.send(message);
Chat chat = await _findOrCreate(receiverUUID);
/// FIXME Unhandled Exception: Unsupported operation: Cannot add to an unmodifiable list
chat.messages.add(message);
notifyListeners();
}发布于 2021-03-09 16:17:11
注意:如果messages是最终的,您仍然可以将项目添加到该列表中。问题是,messages被分配给构造函数中的默认const[]。
而不是:
chat.messages.add(message);试试这个:
chat.messages = [...chat.messages, message];...是扩展算子。这一行将在最后创建一个带有message的新列表。
您还可以使用List.from()和..相结合。
chat.messages = List.from(chat.messages)..add(message);在这里,..是级联表示法。它将把message添加到新列表中,但是列表将被返回,而不是add方法的结果(这将是无效的)。
您还可以使用非const []初始化messages:
class Chat {
final String uuid;
final User receiverUser;
List<Message> messages;
Chat({this.uuid, this.receiverUser, List<Messages>? messages})
: messages = messages ?? [];
}https://stackoverflow.com/questions/66550202
复制相似问题