Тип массива Поле в документе Firestore для преобразования в Список пользовательских объектов - PullRequest
0 голосов
/ 29 апреля 2020

Данные на моей базе данных выглядят так: enter image description here

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

У меня есть класс пользователя, в котором есть поле «Список коллег». Мой код преобразования для пользовательского класса выглядит следующим образом:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:snagsnapper/Contants/constants.dart';
import 'package:snagsnapper/Data/colleague.dart';

class User {
  User ({
    this.name,
    this.dateFormat,
    this.listOfALLColleagues,
  });

  String name;
  String dateFormat='dd-MM-yyyy';
  List<Colleague> listOfALLColleagues;

  User.fromMap(DocumentSnapshot data)
      : this(
    name: data[NAME],
    dateFormat: data[DATE_FORMAT],
    listOfALLColleagues: List<Colleague>.from(data[LIST_OF_COLLEAGUES]),
  );

  Map<String, dynamic> toJSON() => {
    NAME : name,
    DATE_FORMAT : dateFormat,
    LIST_OF_COLLEAGUES : listOfALLColleagues,
  };

}

Мой класс «Коллега» выглядит следующим образом:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:snagsnapper/Contants/constants.dart';

class Colleague {
  String name;
  String email;
  String phone;
  String uniqueID;

  Colleague({
    this.name,
    this.email,
    this.phone,
    this.uniqueID,
  });

  Colleague.fromMap(DocumentSnapshot data)
      : this(
    name: data[NAME],
    email: data[EMAIL],
    phone: data[PHONE],
    uniqueID: data[UID],
  );

  Map<String, dynamic> toJSON() => {
    NAME : name,
    EMAIL : email,
    PHONE : phone,
    UID : uniqueID,
  };
}

Я пробовал несколько методов, которые я видел в Интернете до сих пор, но без удача: я попробовал:

listOfALLColleagues: List<Colleague>.from(data[LIST_OF_COLLEAGUES]),
listOfALLColleagues: List.from(data[LIST_OF_COLLEAGUES]),
listOfALLColleagues: List.castFrom(data[LIST_OF_COLLEAGUES]),
listOfALLColleagues: data[LIST_OF_COLLEAGUES] as List<Colleague>,
listOfALLColleagues: data[LIST_OF_COLLEAGUES]
        .map((value) {
          return Colleague.fromMap(value);
        }).toList(),

Я знаю, что некоторые из них - это одно и то же, но я просто хочу упомянуть их здесь.

1 Ответ

1 голос
/ 02 мая 2020

Мне удалось сделать это с Json -Serial библиотекой. Я не знал об этой библиотеке ранее, и я обнаружил, что так намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...