database - FutureBuilder和ListView.builder

标签 database firebase flutter dart google-cloud-firestore

有人可以向我解释如何使用FutureBuilder内部的ListView.Builder中的itemCount。
目前,我的FirebaseCloud Store只有一个Document,而我的应用正在返回一个无穷大的文档列表,
我尝试使用itemCount: snapshot.data.documents.length,但是,得到错误:Class 'DocumentSnapshot' has no instance getter 'documents'. Receiver: Instance of 'DocumentSnapshot' Tried calling: documents 编辑,它只应显示一次此文档,如果与UID相关的文档不止一个,则仅显示一次
enter image description here
这是我的代码

final tabs = [
        Center(

            child: (Scaffold(
                body: FutureBuilder(
                    future: FirebaseFirestore.instance
                        .collection('users')
                        .doc(uid)
                        .get(),
                    builder: (context, AsyncSnapshot snapshot) {
                      if (snapshot.data == null)
                        return CircularProgressIndicator();
                      DocumentSnapshot manuais = snapshot.data;

                      if (snapshot.hasData) {
                        print('okkk');
                        print(manuais.data()['nome']);
                      } else {
                        print('nopeeeee');
                      }
                      return Container(
                        padding: EdgeInsets.all(16),
                        child: ListView.builder(

                            itemCount: snapshot.data.documents.length,

                            itemBuilder: (context, index) {


                              DocumentSnapshot manuais = snapshot.data;

                              return Card(
                                color: Colors.grey[250],
                                child: Container(
                                  padding: EdgeInsets.all(10),
                                  child: Column(
                                    crossAxisAlignment:
                                        CrossAxisAlignment.start,
                                    children: <Widget>[
                                      new Image.asset(
                                        'Images/pdflogo.png',
                                        width: 32,
                                      ),
                                      Center(
                                        child: Text(
                                          (manuais.data()['nome'].toString()),
                                          maxLines: 1,
                                          overflow: TextOverflow.ellipsis,
                                          style: TextStyle(fontSize: 16),
                                        ),
                                      ),
                                      ButtonBar(
                                        children: <Widget>[
                                          FlatButton(
                                              child: const Text(
                                                  'Compartilhar / Download'),
                                              onPressed: () async {
                                                var request = await HttpClient()
                                                    .getUrl(Uri.parse(manuais
                                                        .data()['documento']));
                                                var response =
                                                    await request.close();
                                                Uint8List bytes =
                                                    await consolidateHttpClientResponseBytes(
                                                        response);
                                                await Share.file(
                                                    'ESYS AMLOG',
                                                    'Manual.pdf',
                                                    bytes,
                                                    'image/jpg');
                                              }),
                                        ],
                                      ),
                                    ],
                                  ),
                                ),
                              );
                            }),
                      );
                    })))),

````

最佳答案

你必须做:

itemCount : 1
由于您只检索一个文档,因此在执行以下操作时:
FirebaseFirestore.instance
                        .collection('users')
                        .doc(uid)
                        .get()
由于文档ID始终是唯一的,因此以上内容将始终检索一个文档。

关于database - FutureBuilder和ListView.builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63991804/

相关文章:

flutter - ( flutter )在Grid View Builder中选择对项目有影响吗?

Flutter:如何使GridView行高包裹内容?

java - 用什么来存储可以查询的序列化数据?

database - 测验项目的 Postgresql DB 设计

javascript - for 循环和 promise 有问题,因为我需要遍历对象来获取值

android - Firebase getreference() vrs getreference(值)

asp.net - LINQ 问题 : FK-Table not set correctly

android - 如何为一个应用程序创建一个数据库,以供使用同一应用程序的所有用户共享?

java - 如何使用 Firebase 查询 equalTo(value, key)?

xml - 如何在Flutter中对来自HttpClient流的XML元素进行分组