在 中firestore,我有一個arrayof (簡單)maps。
將這些資料放入 時Flutter/Dart,使用cloud_firestore如下包:
Stream<T> documentStream<T>({
required String path,
required T Function(Map<String, dynamic>? data, String documentID) builder})
{
final DocumentReference<Map<String, dynamic>> reference =
FirebaseFirestore.instance.doc(path);
final Stream<DocumentSnapshot<Map<String, dynamic>>> snapshots =
reference.snapshots();
return snapshots.map((snapshot) => builder(snapshot.data(), snapshot.id));
}
并消耗這個例如如下:
documentStream(
path: 'firestore_path_doc',
builder: (data, documentId) {
final x = data['array_of_maps'];
print(x[0].runtimeType); // gives LinkedMap<String, dynamic>
final y = x as List<Map<String, String>>; // fails
final y1 = x[0] as Map<String, String>; // fails
},
);
失敗。
我找不到將此陣列內的貼圖轉換為法線貼圖的方法。事實上,我幾乎找不到任何關于LinkedMap. 挖掘后,我在js( https://pub.dev/packages/js ) 包中看到它,但它在內部,不應該暴露。
如果我有一個mapin firestore,它很容易轉換為一個Map<String, String>in dart。但是 a mapinside anarray作為LinkedMap.
我該如何作業LinkedMap?我什至無法迭代它,因為它在編譯時無法識別,即使我嘗試匯入js.
謝謝
uj5u.com熱心網友回復:
x[0]型別是Map<String, dynamic>. 您正在嘗試將其強制轉換為Map<String, String>,這顯然會失敗。不過,您可以手動執行此操作:
final x = data['array_of_maps'] as List<Map<String, dynamic>>;
final myMap = x[0].map((key, value) => MapEntry(key, value.toString()));
uj5u.com熱心網友回復:
我按照以下答案開始作業:如何將 Firestore 中的地圖陣列轉換為地圖 Dart 串列
基本上通過使用 aclass作為內部map而不是泛型Map。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/340226.html
標籤:扑 镖 谷歌云firestore
上一篇:與Null安全性的混淆
下一篇:焦點焦點節點上的顫動余量
