Firebase 类别';QueryDocumentSnapshot';没有实例方法';[]和#x27;。接收方:实例';QueryDocumentSnapshot';已尝试呼叫:[](“名称”)

Firebase 类别';QueryDocumentSnapshot';没有实例方法';[]和#x27;。接收方:实例';QueryDocumentSnapshot';已尝试呼叫:[](“名称”),firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我正试图从FireStore中检索这两个值 lastname“test”(字符串)name“Carlos”(字符串) 然而,我得到了这个错误 *引发了另一个异常:NoSuchMethodError:类“QueryDocumentSnapshot”没有实例方法“[]”。 ═ widgets库捕获到异常═ 在生成StreamBuilder时引发了以下NoSuchMethodError(脏,状态: _StreamBuilderBasState#e1fff): 类“QueryDocumentSnapsh

我正试图从FireStore中检索这两个值

lastname“test”(字符串)name“Carlos”(字符串)

然而,我得到了这个错误

*引发了另一个异常:NoSuchMethodError:类“QueryDocumentSnapshot”没有实例方法“[]”。
═ widgets库捕获到异常═
在生成StreamBuilder时引发了以下NoSuchMethodError(脏,状态:
_StreamBuilderBasState#e1fff):
类“QueryDocumentSnapshot”没有实例方法“[]”。
接收器:“QueryDocumentSnapshot”的实例
尝试呼叫:[](“名称”)
这是我的密码:

import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class HomePage extends StatelessWidget{

 List<Widget> makeListWiget(AsyncSnapshot snapshot){
   return snapshot.data.documents.map<Widget>((document){
     return ListTile(
       title: Text(document["name"]),
       subtitle: Text(document["lastname"]),

     );
   }).toList();

 }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
  appBar: AppBar(
    title: Text('Área do Cliente'),

  ),
    body: Container(
    child: StreamBuilder (
      stream: FirebaseFirestore.instance.collection("users").snapshots(),
      builder: (context, snapshot){
        return ListView(
          children: makeListWiget(snapshot),


        );
      }
   )

   )
   );

 }

}
导入“包装:颤振/材料.省道”;
导入“包:cloud_firestore/cloud_firestore.dart”;
类主页扩展了无状态小部件{
列表makeListWiget(异步快照快照){
返回snapshot.data.documents.map((文档){
返回列表块(
标题:文本(文件[“名称]),
副标题:文本(文档[“lastname]”),
);
}).toList();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“客户区”),
),
主体:容器(
孩子:StreamBuilder(
流:FirebaseFirestore.instance.collection(“用户”).snapshots(),
生成器:(上下文,快照){
返回列表视图(
子项:makeListWiget(快照),
);
}
)
)
);
}
}

您试图使用
文档[“名称”]
访问的对象无效,因为该对象是实例QueryDocumentSnapshot,并且没有方法[]。但是,它支持get方法,以便进一步阅读。我对您的代码做了一些更改,下面是一个工作版本

如果尚未添加,请在pubspec.yaml中添加
firebase\u core:^0.5.0
作为依赖项

    import 'package:firebase_core/firebase_core.dart';
    import 'package:flutter/material.dart';
    import 'package:cloud_firestore/cloud_firestore.dart';
    
    class HomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return FutureBuilder(
          future: Firebase.initializeApp(),
          builder: (context, snapshot) {
            final FirebaseFirestore _fireStore = FirebaseFirestore.instance;
            return Scaffold(
                appBar: AppBar(
                  title: Text('Área do Cliente'),
                ),
                body: Container(
                    child: StreamBuilder(
                        stream: _fireStore
                            .collection("users")
                            .snapshots(),
                        builder: (context, snapshot) {
                          return ListView(
                            children: makeListWiget(snapshot),
                          );
                        })));
          },
        );
      }

  List<Widget> makeListWiget(AsyncSnapshot snapshot) {
    return snapshot.data.documents.map<Widget>((document) {
      return ListTile(
        title: Text(document.get('name')),
        subtitle: Text(document.get('lastname')),
      );
    }).toList();
  }
}
import'包:firebase_core/firebase_core.dart';
进口“包装:颤振/材料.省道”;
导入“包:cloud_firestore/cloud_firestore.dart”;
类主页扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
回归未来建设者(
future:Firebase.initializeApp(),
生成器:(上下文,快照){
最终FirebaseFirestore _fireStore=FirebaseFirestore.instance;
返回脚手架(
appBar:appBar(
标题:文本(“客户区”),
),
主体:容器(
孩子:StreamBuilder(
流:_fireStore
.收集(“用户”)
.snapshots(),
生成器:(上下文,快照){
返回列表视图(
子项:makeListWiget(快照),
);
})));
},
);
}
列表makeListWiget(异步快照快照){
返回snapshot.data.documents.map((文档){
返回列表块(
标题:文本(document.get('name')),
字幕:文本(document.get('lastname'),
);
}).toList();
}
}

来自cloud\u firestore:^0.14.0+2版本,许多方法和字段已更改

Need to use get() method for accessing particular field of a doucment like this document.get('user_name') instead of document['user_name']

So you have to access all fields as follows:
document.get('user_name')
document.get('user_mobile')
document.get('user_address')
还有其他方法,如setData()作为set(),updateData()作为update()

请检查文件

Need to use get() method for accessing particular field of a doucment like this document.get('user_name') instead of document['user_name']

So you have to access all fields as follows:
document.get('user_name')
document.get('user_mobile')
document.get('user_address')