Flutter Firestore - 如何读写对象数组

2024-02-12

因此,我一直在努力使用 Flutter 在 Firestore 中读取和写入对象数组。对于写入,数组永远不会在 Firestore 中更新,我不知道为什么。我试过了:

.updateData({"tasks": FieldValue.arrayUnion(taskList.tasks)});

and

.updateData(taskList.toMap());

但似乎都没有做任何事情。

对于阅读,我通常会遇到错误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();

}

任务.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'];
}

任何帮助或建议表示赞赏!


我最终将任务列表设为动态类型,这解决了我的大部分阅读问题。但还是不明白为什么。

List<Task> tasks;

为了编写,我只是将 fromMap() 更改为 toMap() 来初始化任务。

'tasks': tasks.map((item) {
      return item.toMap();
    }).toList(),
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter Firestore - 如何读写对象数组 的相关文章

随机推荐