数组类型将在Firestore文档中的字段转换为自定义对象列表

时间:2020-04-29 12:46:47

标签: firebase flutter dart google-cloud-firestore

firebase上的数据如下所示: 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 个答案:

答案 0 :(得分:1)

我设法用Json-Serial库做到了。我之前并不知道这个库,所以我发现它很容易。