![](/img/trans.png)
[英]Flutter StreamBuilder widget Error : type ' () => Map<String, dynamic >' is not a subtype of type 'DocumentSnapshot<Object?>' in type cast
[英]Exception: type 'String' is not a subtype of type 'Map<dynamic, dynamic>' in type cast in flutter
當我創建一個實時數據庫表時,我得到了表數據但我得到了一個錯誤:類型'String'不是類型轉換中'Map<dynamic,dynamic>'類型的子類型
FirebaseAnimatedList(
query: dbRef,
itemBuilder: (BuildContext context, DataSnapshot snapshot,
Animation<double> animation, int index) {
Map data = snapshot.value as Map;
data['key'] = snapshot.key;
return listItem(data);
},
),
我得到了結果
這里 snapshot.data 是 map 和 snapshot.value 是字符串
嘗試
Map data = snapshot.data as Map;
如果它是使用jsonDecode
。 或者,您可以使用以鍵、值對 Map 的形式出現的 snapshot.data。
FirebaseAnimatedList(
query: dbRef,
itemBuilder: (BuildContext context, DataSnapshot snapshot,
Animation<double> animation, int index) {
Map data = jsonDecode(snapshot.value.toString());
// or
Map data = snapshot.data;
// Now do what you want to do
data['key'] = snapshot.key;
return listItem(data);
},
),
我認為您的查詢返回單個值,首先對其進行測試
itemBuilder: (BuildContext context, DataSnapshot snapshot,
Animation<double> animation, int index) {
return Text("${snapshot.value}");
},
現在要獲取 map,可以獲得 null 值,對於這種情況,請執行
itemBuilder: (BuildContext context, DataSnapshot snapshot,
Animation<double> animation, int index) {
Map? data = snapshot.value as Map?;
final String? key = snapshot.key;
return Text("Your ItemBUilder : $key ${data.toString()}");
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.