期望类型为“Map<String, dynamic>”的值,但得到类型为“() => Map<String, dynamic>?”的值

初学者_

我正在使用 Firebase 云 Firestore 开发带有 flutter 的 Web 应用程序。

我想从 firestore 获取值,但发生错误并且无法获取它们。

错误;

期望类型为“Map<String, dynamic>”的值,但得到类型为“() => Map<String, dynamic>?”的值

代码;

  Future<String> getData(String collection, String field) async {
    DocumentSnapshot docSnapshot =
        await FirebaseFirestore.instance.collection(collection).doc().get();
    Map<String, dynamic> record = docSnapshot.data as Map<String, dynamic>;
    return record[field];
  }


FutureBuilder(
              future: getData("users", "userName"),
              builder: (context, snapshot) {
                if (snapshot.connectionState != ConnectionState.done) {
                  return const SizedBox(
                    width: 50,
                    child: LinearProgressIndicator(),
                  );
                }

                if (snapshot.hasError) {
                  return SelectableText(snapshot.error.toString());
                }

                if (!snapshot.hasData) {
                  return const Text('No data found');
                }

                return Text('${snapshot.data}');
              },
            )

这段代码是 FutureBuilder,它getData()在发生错误时调用并在屏幕上显示错误语句。


经过一番研究,我找到了一种以这种方式摆脱错误的方法。像这样的代码;

Map<String,dynamic> record = new Map<String,dynamic>.from(docSnapshot.data["songs"]);

但是,这在语法上是不正确的,并且会导致编译错误。从 2019 年到现在,Firestore 似乎发生了很大变化,这就是原因吗?

docSnapshot.data["songs"]

这对 无效DocumentSnapshot

任何人都可以解决这个错误吗?谢谢你。

加1;

我更改了代码,但发生了其他类似的错误。第一个错误已解决。

    Map<String, dynamic> record = docSnapshot.data() as Map<String, dynamic>;

期望类型为“Map<String, dynamic>”的值,但得到类型为“Null”的值

Firestore 确认数据“userName”正确存在。

图像1

h8moss

我相信DocumentSnapshot.data是一种方法,因此您应该将其更改为:DocumentSnapshot.data()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

错误:List <dynamic>不是Map <String,dynamic>类型的子类型

异常'_InternalLinkedHashMap <dynamic,dynamic>'不是'Map <String,String>'类型的子类型

Flutter MethodChannel嵌套值:'List <dynamic>'不是'FutureOr <List <Map <String,double >>>'类型的子类型

Flutter-SQflite'_InternalLinkedHashMap <dynamic,dynamic>'不是'Map <String,dynamic>'类型的子类型

从API获取Map <String,dynamic>后的值

Flutter http错误类型'_InternalLinkedHashMap <dynamic,dynamic>'不是'Map <String,String>'类型的子类型

如何解决此错误:'_InternalLinkedHashMap <dynamic,dynamic>'不是'Map <String,dynamic>'类型的子类型

如何解析类型'_InternalLinkedHashMap <dynamic,dynamic>'不是'Map <String,dynamic>类型的子类型

List <dynamic>类型不是'Map <String,dynamic>'类型的子类型

_CastError(类型'_InternalLinkedHashMap <dynamic,dynamic>'不是强制类型转换中'Map <String,dynamic>'类型的子类型)

未处理的异常:在飞镖中,类型'_InternalLinkedHashMap <dynamic,dynamic>'不是类型'Map <String,dynamic>'的子类型

Flutter / cloud_firestore:未为Map <String,dynamic> Function()类型定义运算符'[]'

'_InternalLinkedHashMap <dynamic,dynamic>'不是类型转换中'Map <String,dynamic>'类型的子类型

fluter错误预期值为'Map <dynamic,dynamic>'类型的值,但得到了'List <dynamic>'类型的值之一

类型 'List<dynamic>' 不是类型 'Map<String, dynamic>' 的子类型

未处理的异常:类型 '_InternalLinkedHashMap<dynamic, dynamic>' 不是类型 'Map<String, dynamic>' 的子类型?

参数类型 'Map<String, dynamic> Function()' 不能分配给参数类型 'Map<String, dynamic>'

类型 'String' 不是类型 'Map<String, dynamic>' 的子类型

参数类型 'Map<dynamic, dynamic>' 不能分配给参数类型 'Map<String, dynamic>'

期望类型为“String”的值,但在 FutureBuilder SnapShot Flutter 中得到类型为“Null”的值

Flutter json 期望类型为“List<dynamic>”的值,但得到类型为“”的值

颤振错误:“对象?”类型的值 不能分配给类型为“Map<dynamic, dynamic>”的变量

类型 List<dynamic> 不是类型 Map<String dynamic> 的子类型

类型 '() => Map<String, dynamic>?' 不是类型转换中“Map<String, dynamic>”类型的子类型

期望类型为“Map<String, dynamic>”的值,但得到类型为“Null”的值

type 不是 Map<String, dynamic>, @JsonSerializable() 类型的子类型

“List<Map<String, dynamic>>”类型的值不能分配给“List<ProjectBoxes>”类型的变量

类型“_CompactLinkedHashSet<String>”不是类型“Map<dynamic, dynamic>?”的子类型

如何修复:“Map<String, dynamic>”类型的值,但得到“List<dynamic>”类型之一