[英]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.