【问题标题】:Class 'DocumentSnapshot' has no instance getter 'doc'. Receiver: Instance of 'DocumentSnapshot' Tried calling: doc“DocumentSnapshot”类没有实例获取器“doc”。接收方:“DocumentSnapshot”实例尝试调用:doc
【发布时间】:2021-05-07 07:51:07
【问题描述】:

我最近开始使用 firebase firestore,这是一个我似乎无法找到答案的错误,我在查看类似问题的答案后尝试将 snapshot.data.documents 编写为文档、文档和文档,但它仍然抛出同样的错误。我该怎么办? 我使用的firestore版本是cloud_firestore:^1.0.7

import 'package:firebase_database/firebase_database.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
// import 'package:vola1/colors.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_core/firebase_core.dart';

class test extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        // floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
        body: StreamBuilder(
      stream: FirebaseFirestore.instance
          .collection('countries')
          .doc('nW9L4LGpn2MZVyiTyUII')
          .snapshots(),
      builder: (context, snapshot) {
        if (!snapshot.hasData) return Text('Loading data.. please wait..');
        return Column(
          children: <Widget>[
            Text(
              snapshot.data.doc[0]['name'],
              style: TextStyle(fontSize: 20),
            ),
          ],
        );
      },
    ));
  }
}

它抛出的异常

======== Exception caught by widgets library =======================================================
The following NoSuchMethodError was thrown building StreamBuilder<DocumentSnapshot>(dirty, state: _StreamBuilderBaseState<DocumentSnapshot, AsyncSnapshot<DocumentSnapshot>>#af0fe):
Class 'DocumentSnapshot' has no instance getter 'documents'.
Receiver: Instance of 'DocumentSnapshot'
Tried calling: documents

The relevant error-causing widget was: 
  StreamBuilder<DocumentSnapshot> file:///D:/flutter%20course/vola1/lib/test.dart:14:15
When the exception was thrown, this was the stack: 
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
#1      test.build.<anonymous closure> (package:vola1/test.dart:24:29)
#2      StreamBuilder.build (package:flutter/src/widgets/async.dart:545:81)
#3      _StreamBuilderBaseState.build (package:flutter/src/widgets/async.dart:124:48)
#4      StatefulElement.build (package:flutter/src/widgets/framework.dart:4612:27)
...
====================================================================================================

【问题讨论】:

  • 我已经添加了答案。

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:

要从DocumentSnapshot 获取数据,请使用data getter,它将文档中的所有字段作为 Map 检索; docs 用于 QuerySnapshot 类。

在下面更改此代码:

          snapshot.data.doc[0]['name'],

到这里:

          snapshot.data['name'],

【讨论】:

  • 类“DocumentSnapshot”没有实例方法“call”。接收方:“DocumentSnapshot”实例尝试调用:call() 抛出此错误
  • 我刚刚更新了答案。请重试。
猜你喜欢
  • 2021-06-22
  • 2020-10-19
  • 2020-09-03
  • 1970-01-01
  • 2021-10-02
  • 2021-05-04
  • 2020-12-19
  • 2020-09-10
  • 2023-02-23
相关资源
最近更新 更多