【问题标题】:field is String || field is FieldPath字段是字符串 ||字段是 FieldPath
【发布时间】:2021-05-15 09:13:39
【问题描述】:

我该如何解决这个问题?

我想用 id 和密码登录,但出现以下错误:

E/flutter (985): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:'package:cloud_firestore_platform_interface/src/platform_interface/platform_interface_document_snapshot.dart':断言失败:第 69 行 pos 12 : '字段为字符串 || field is FieldPath': 支持的 [field] 类型为 [String] 和 [FieldPath]

adminlogin() {
FirebaseFirestore.instance.collection('Admins').get().then((snapshot) {
  snapshot.docs.forEach((result) {
    if (result.get(['id']) != AdminID_controller.text.trim()) {
      // ignore: deprecated_member_use
      Scaffold.of(context)
          .showSnackBar(SnackBar(content: Text("id is incorrect")));
    } else if (result.get(['password']) !=
        PasswordAdmin_controller.text.trim()) {
      Scaffold.of(context)
          .showSnackBar(SnackBar(content: Text("Password is incorrect")));
    } else {
      Scaffold.of(context).showSnackBar(
          SnackBar(content: Text(" welcome" + result.get(['name']))));
    }
  });
});
}

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    您的问题在于以下语句:result.get(['id'])QueryDocumentSnapshot 类的 get 函数旨在采用 StringFieldPath 作为文档状态。您通过添加括号来传递List。去掉括号。

    result.get('id')
    

    您没有收到静态分析错误的原因是get 函数的参数被声明为dynamic,因此它可以采用StringFieldPath 对象。具有动态参数的函数通常是这样完成的,以便它们可以在同一位置获取不同类型的对象。另一个例子是jsonEncode 函数。但是,重要的是要注意文档说明它们实际可以采用的数据类型。

    【讨论】:

    • @DawanMahmud 如果它解决了您的问题,请投票/接受答案。
    猜你喜欢
    • 2015-03-25
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 2021-11-06
    • 2021-12-03
    • 2017-09-27
    相关资源
    最近更新 更多