Jar*_*red 7 dart firebase flutter google-cloud-firestore
所以我一直在努力使用 Flutter 在 Firestore 中读写对象数组。对于写作,数组永远不会在 Firestore 中更新,我不知道为什么。我试过了:
.updateData({"tasks": FieldValue.arrayUnion(taskList.tasks)});
Run Code Online (Sandbox Code Playgroud)
和
.updateData(taskList.toMap());
Run Code Online (Sandbox Code Playgroud)
但似乎都没有做任何事情。
对于阅读,我通常会收到错误type 'List<dynamic>' is not a subtype of type 'List<Task>'。我很确定这与我的班级结构有关,但我无法弄清楚。我尝试了许多不同的方法来将数据作为任务列表获取,但所有尝试都失败了。这是我当前损坏的代码:
任务列表.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();
}
Run Code Online (Sandbox Code Playgroud)
任务.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'];
}
Run Code Online (Sandbox Code Playgroud)
任何帮助或建议表示赞赏!
我最终制作了动态类型的任务列表,这解决了我的大部分阅读问题。不过还是不明白为什么。
List<Task> tasks;
Run Code Online (Sandbox Code Playgroud)
对于写作,我只是将 fromMap() 更改为 toMap() 以初始化任务。
'tasks': tasks.map((item) {
return item.toMap();
}).toList(),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6042 次 |
| 最近记录: |