Flutter 颤振从ListView.builder中单击一张卡

Flutter 颤振从ListView.builder中单击一张卡,flutter,flutter-listview,Flutter,Flutter Listview,我的应用程序中有一个屏幕,我使用ListView.builder从地图创建了一堆卡片: 现在我想点击这些卡片,当我点击时,我进入一个新的活动,并将医生的名字和他的其他信息传递给新的活动 我该怎么做 这是一个代码示例 class DocBanner extends StatelessWidget { @override Widget build(BuildContext context) { Size size = MediaQuery.of(context).size;

我的应用程序中有一个屏幕,我使用ListView.builder从地图创建了一堆卡片:

现在我想点击这些卡片,当我点击时,我进入一个新的活动,并将医生的名字和他的其他信息传递给新的活动

我该怎么做

这是一个代码示例

class DocBanner extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    Size size = MediaQuery.of(context).size;
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      mainAxisSize: MainAxisSize.min,
      children: <Widget>[
        Padding(
          padding: const EdgeInsets.symmetric(vertical: 0, horizontal: 10),
          child: Text(
            'Our Doctors:',
            style: TextStyle(
              fontSize: 18,
            ),
          ),
        ),
        Container(
          padding: EdgeInsets.symmetric(
            horizontal: 5.0,
            vertical: 25.0,
          ),
          height: 190,
          width: size.width,
          child: ListView.builder(
            scrollDirection: Axis.horizontal,
            shrinkWrap: true,
            itemBuilder: (context, index) {
              return Container(
                width: size.width - 150,
                child: Card(
                  child: Padding(
                    padding: const EdgeInsets.all(18.0),
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: <Widget>[
                        Text(
                          '${myList[index]['name']}',
                          style: TextStyle(
                            fontSize: 22,
                            fontWeight: FontWeight.bold,
                            letterSpacing: 2,
                          ),
                        ),
                        SizedBox(
                          height: size.height - (size.height * 0.99),
                        ),
                        Text(
                          '${myList[index]['specialite']}',
                          style: TextStyle(
                            fontSize: 20,
                          ),
                        ),
                        SizedBox(
                          height: size.height - (size.height * 0.99),
                        ),
                        Text(
                          '${myList[index]['city']}',
                          style: TextStyle(
                            fontSize: 20,
                            color: Colors.red,
                          ),
                        ),
                      ],
                    ),
                  ),
                ),
              );
            },
            itemCount: myList.length,
          ),
        ),
      ],
    );
  }
}
类DocBanner扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
Size Size=MediaQuery.of(context).Size;
返回列(
crossAxisAlignment:crossAxisAlignment.start,
mainAxisSize:mainAxisSize.min,
儿童:[
填充物(
填充:常量边集。对称(垂直:0,水平:10),
子:文本(
“我们的医生:”,
样式:TextStyle(
尺码:18,
),
),
),
容器(
填充:EdgeInsets.symmetric(
水平:5.0,
垂直线:25.0,
),
身高:190,
宽度:size.width,
子项:ListView.builder(
滚动方向:轴水平,
收缩膜:对,
itemBuilder:(上下文,索引){
返回容器(
宽度:size.width-150,
孩子:卡片(
孩子:填充(
填充:常数边集全部(18.0),
子:列(
crossAxisAlignment:crossAxisAlignment.start,
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
正文(
“${myList[index]['name']}”,
样式:TextStyle(
尺寸:22,
fontWeight:fontWeight.bold,
字母间距:2,
),
),
大小盒子(
高度:size.height-(size.height*0.99),
),
正文(
“${myList[index]['specialite']}”,
样式:TextStyle(
尺寸:20,
),
),
大小盒子(
高度:size.height-(size.height*0.99),
),
正文(
“${myList[index][city']}”,
样式:TextStyle(
尺寸:20,
颜色:颜色,红色,
),
),
],
),
),
),
);
},
itemCount:myList.length,
),
),
],
);
}
}

您可以使用手势检测器并在onTap方法中导航到另一个屏幕,如下所示:

ListView.builder(
    scrollDirection: Axis.horizontal,
    shrinkWrap: true,
    itemBuilder: (context, index) {
      return GestureDetector(
          onTap: navigateToOtherScreen(myList[index]),
          child: Container(
....

将每个项目包装在gesturedetector中,并在gesturedetector的ontap()中使用navigator。如何获取医生的姓名和城市,然后单击以将其传递到新屏幕@doct您将导航到的其他小部件应该在构造函数中包含参数。像
NewScreen(this.name)
并将它们作为
onTap:()=>Navigator.push(context,MaterialPageRoute(builder:()=>NewScreen(name))
传递,这里的名称是
“${myList[index]['name']}”
好的,在我的例子中,我使用的是一个气泡底部栏,新屏幕是底部栏中的一个选项卡“如图中所示”,是否有办法将当前选项卡更改为新选项卡?@doct底部栏将有一些索引来跟踪当前页面,请更改。要使其正常工作,底部栏应与此页面和新页面共用。