首页 > 解决方案 > Flutter Firebase Filestore - 投射返回的列表进入列表

问题描述

我正在从我的 firebase 数据库中取回 BaseObjects 列表。这工作正常。

在这些对象上是一个 CustomObjects 数组。

返回 BaseObjects 列表时,我还想将自定义对象转换为实际的 CustomObject 列表。

所以在firebase数据库上:

BaseObject:
   title: 'example'
   custom_objects: // array
     0
       'name 0'
     1
       'name 1'

在我的应用程序中,我有一个 BaseObject 和 CustomObject 的模型文件

因此,当我检索 BaseObjects 列表时,它工作正常。问题是如果我尝试在每个 BaseObject 中获取 CustomObjects 数组。

Stream<List<BaseObject>> get baseObjects {
  return baseObjectCollection.snapshots().map(_baseObjectListFromSnapshot);
}

List<BaseObject> _baseObjectListFromSnapshot(QuerySnapshot snapshot) {
  return snapshot.documents.map((doc) {
    final baseObject = BaseObject(
      title: doc.data['title'] ?? '',
      customObjects: List<CustomObject>.from(doc.data['custom_objects']) ?? [],
    );

    return baseObject;
  }).toList();
}

我得到的错误:

Exception:
type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'CustomObject'

更新:

I fixed it by doing:

        customObjects: List<CustomObject>.from(doc.data["custom_objects"].map((item) {
              return new CustomObject(
                title: item["title"] ?? '',
              );
            },),) ?? [],

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


更新:

我通过以下方式修复了它:

    customObjects: List<CustomObject>.from(doc.data["custom_objects"].map((item) {
          return new CustomObject(
            title: item["title"] ?? '',
              );
            },
          ),
        ) ?? [],

推荐阅读