我一直在使用Flutter读写Firestore中的对象数组时遇到了困难。在写入时,该数组从未在Firestore中更新,我不知道原因。我已经尝试过:
.updateData({"tasks": FieldValue.arrayUnion(taskList.tasks)});
并且
.updateData(taskList.toMap());
但似乎两者都没有做任何事情。
阅读时,我通常会收到错误消息type 'List<dynamic>' is not a subtype of type 'List<Task>'
。我相信这与我的类结构有关,但我无法弄清楚。我尝试了许多不同的方法来将数据作为任务列表,但所有尝试都失败了。这是我当前错误的代码:
TaskList.dart
class TaskList {
String name;
List<Task> tasks;
TaskList(this.name, this.tasks);
Map<String, dynamic> toMap() => {'name': name, 'tasks': tasks};
TaskList.fromSnapshot(DocumentSnapshot snapshot)
: name = snapshot['name'],
tasks = snapshot['tasks'].map((item) {
return Task.fromMap(item);
}).toList();
}
Task.dart
class Task {
String task;
bool checked;
Task(this.task, this.checked);
Map<String, dynamic> toMap() => {
'task': task,
'checked': checked,
};
Task.fromMap(Map<dynamic, dynamic> map)
: task = map['task'],
checked = map['checked'];
}
感谢您的帮助和建议!