Flterster Firestore - Как читать и записывать массивы объектов - PullRequest
0 голосов
/ 02 января 2019

Так что я боролся с чтением и записью массивов объектов в Firestore, используя Flutter.Для записи массив никогда не обновляется в 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'];
}

Любая помощь или совет приветствуется!

1 Ответ

0 голосов
/ 03 января 2019

Я закончил составлять список задач динамического типа, и это решило большинство моих проблем с чтением.Все еще не понимаю, почему, хотя.

List<Task> tasks;

А для записи я просто изменил fromMap () на toMap () для инициализации задач.

'tasks': tasks.map((item) {
      return item.toMap();
    }).toList(),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...