Firebase 颤振-如何在下一页查询与先前单击的ListTile相同的文档id

Firebase 颤振-如何在下一页查询与先前单击的ListTile相同的文档id,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,基本上我想说的是- 我有一个listview.builder,每个ListTile显示firestore集合中特定文档的三个字段。我想要实现的是,当单击该listtile时,它应该将用户带到一个页面,该页面显示同一文档中的更多字段。 我想知道的是,我应该查询什么以及如何获得完全相同的文档id 要了解更多信息,请以聊天应用程序为例。当单击显示另一个用户配置文件pic和名称的列表互动程序时,我如何确保下一个显示该用户更多字段的页面,从与单击列表互动程序相同的文档中查询其数据 我不确定我是否解释得很好

基本上我想说的是- 我有一个listview.builder,每个ListTile显示firestore集合中特定文档的三个字段。我想要实现的是,当单击该listtile时,它应该将用户带到一个页面,该页面显示同一文档中的更多字段。 我想知道的是,我应该查询什么以及如何获得完全相同的文档id

要了解更多信息,请以聊天应用程序为例。当单击显示另一个用户配置文件pic和名称的列表互动程序时,我如何确保下一个显示该用户更多字段的页面,从与单击列表互动程序相同的文档中查询其数据

我不确定我是否解释得很好,但无论如何,谢谢你,如果你能帮我的话,我将不胜感激

作为我的ListView.builder的一部分,了解更多上下文

FutureBuilder(
        future: getFifaTourneyData(),
        builder: (_, snapshot) {
          return ListView.builder(
              itemCount: snapshot.data.length,
              itemBuilder: (_, index) {
                return GestureDetector(
                    child: Container(
                      margin: EdgeInsets.only(top: 5),
                      width: 120,
                      height: 195,
                      decoration: BoxDecoration(
                        color: Colors.black,
                        borderRadius: BorderRadius.circular(4),
                        image: DecorationImage(
                            image:
                                AssetImage("assets/images/FifaImage3.jpg"),
                            colorFilter: new ColorFilter.mode(
                                Colors.black.withOpacity(0.5),
                                BlendMode.dstATop),
                            fit: BoxFit.cover),
                      ),
                      child: Container(
                        margin:
                            EdgeInsets.only(right: 10, left: 10, bottom: 0),
                        height: 190,
                        width: 340,
                        padding: EdgeInsets.all(10),
                        child: Column(children: <Widget>[
                          Container(
                            child: Row(
                                mainAxisAlignment:
                                    MainAxisAlignment.spaceBetween,
                                children: <Widget>[
                                  Icon(
                                    FontAwesomeIcons.playstation,
                                    color: Colors.white,
                                    size: 35,
                                  ),
                                  Padding(
                                    padding:
                                        EdgeInsets.fromLTRB(130, 0, 0, 0),
                                  ),
                                  Text(
                                    "12 / 16 registered",
                                    style: TextStyle(
                                        color: Colors.white, fontSize: 13),
                                  )
                                ]),
                          ),
                          Padding(padding: EdgeInsets.only(top: 20)),
                          Container(
                            alignment: Alignment.center,
                            child: Text(
                                snapshot.data[index].data['tourneyname'] !=
                                        null
                                    ? snapshot
                                        .data[index].data['tourneyname']
                                    : 'No Name',
                                style: TextStyle(
                                    color: Colors.white,
                                    fontSize: 23,
                                    fontWeight: FontWeight.bold)),
                          ),
                          Padding(padding: EdgeInsets.only(top: 7)),
                                     .........
                      
FutureBuilder(
future:getFifaTourneyData(),
构建器:(\uux,快照){
返回ListView.builder(
itemCount:snapshot.data.length,
itemBuilder:(\ux,索引){
返回手势检测器(
子:容器(
页边距:仅限边集(顶部:5),
宽度:120,
身高:195,
装饰:盒子装饰(
颜色:颜色,黑色,
边界半径:边界半径。圆形(4),
图像:装饰图像(
图片:
资产估值(“资产/图像/FifaImage3.jpg”),
colorFilter:新的colorFilter.mode(
颜色。黑色。不透明度(0.5),
BlendMode.dstoop),
安装:BoxFit.盖),
),
子:容器(
保证金:
仅限边集(右:10,左:10,下:0),
身高:190,
宽度:340,
填充:边缘设置。全部(10),
子项:列(子项:[
容器(
孩子:排(
主轴对准:
MainAxisAlignment.spaceBetween,
儿童:[
图标(
FontAwesomeIcons.playstation,
颜色:颜色,白色,
尺码:35,
),
填充物(
衬垫:
来自LTRB(130,0,0,0)的边集,
),
正文(
“12/16登记”,
样式:TextStyle(
颜色:颜色。白色,字体大小:13),
)
]),
),
填充(填充:仅限边集(顶部:20)),
容器(
对齐:对齐.center,
子:文本(
snapshot.data[index].data['tourneyname']=
无效的
快照
.data[index].data['tourneyname']
:“没有名字”,
样式:TextStyle(
颜色:颜色,白色,
尺寸:23,
fontWeight:fontWeight.bold),
),
填充(填充:仅限边集(顶部:7)),
.........

如果它只是下一页所需的文档id,您可以将其传递给它的构造函数,如下所示:

手势检测器(
onTap:(){
导航器.of(上下文).push(
MaterialPackageRoute(生成器:()=>NextPage(snapshot.data.documents[index].documentID)
);
},
儿童:集装箱。。。。。。。。
),
下一页小部件的构造函数如下所示:

class NextPage扩展了无状态小部件{
最终字符串docID;
下一页(本文件ID);
@凌驾
小部件构建(构建上下文){
返回。。。。。。。。
}
}

你能发布你的
ListView.builder
和详细信息页面的片段吗?这将有助于给出一个更有用的答案我在详细信息页面中没有实现任何东西是的,我的答案帮助嗯,这对我不起作用。我对Flitter有点陌生,所以我不太理解你说的所有内容。我下一页尝试了这部分
(this.docID);//第一种情况下的下一页(this.document);
作为构造函数,但下一页不断加下划线,上面说文档和docID没有初始化。请您也为GestureDetector中的onTap,
快照.documents[index]解释一下好吗
引发此错误
位置参数太多:应为0,但找到1。
我正在尝试获取文档的id,以便在从firestore查询时可以显示该文档中的字段。如果您想知道,如果它只是您想要的id,则第一个案例应该适用于您。我已编辑了答案,以仅适用于t他有身份证,让我们看看是否有效