Dart 颤振复选框类:当我勾选一张卡片时,所有其他卡片也被选中 bool selected=false; 新卡( 形状:选定 ?新的圆形矩形边框( 侧面:新边框侧面(颜色:Colors.blue,宽度:2.0), 边界半径:边界半径。圆形(4.0)) :新的RoundedRectangleBorder( 侧面:新边框侧面(颜色:Colors.white,宽度:2.0), 边界半径:边界半径。圆形(4.0)), 孩子:新的一排( mainAxisAlignment:mainAxisAlignment.spaceBetween, 儿童:[ 新填料( 填充:新边缘设置。全部(8.0), 子项:新文本(${ticketGroups[i]['ticket\u name']}), 样式:consttextstyle( fontSize:15.0,fontFamily:“Poppins”), ), 新填料( 填充:新边缘设置。全部(8.0), 子项:新文本(ticketGroups[i][“used”].toString(), 样式:consttextstyle( fontSize:15.0,fontFamily:“Poppins”), ), 新复选框( 值:选中, 一旦更改:(值){ 设置状态(){ 选中=!选中; }); })

Dart 颤振复选框类:当我勾选一张卡片时,所有其他卡片也被选中 bool selected=false; 新卡( 形状:选定 ?新的圆形矩形边框( 侧面:新边框侧面(颜色:Colors.blue,宽度:2.0), 边界半径:边界半径。圆形(4.0)) :新的RoundedRectangleBorder( 侧面:新边框侧面(颜色:Colors.white,宽度:2.0), 边界半径:边界半径。圆形(4.0)), 孩子:新的一排( mainAxisAlignment:mainAxisAlignment.spaceBetween, 儿童:[ 新填料( 填充:新边缘设置。全部(8.0), 子项:新文本(${ticketGroups[i]['ticket\u name']}), 样式:consttextstyle( fontSize:15.0,fontFamily:“Poppins”), ), 新填料( 填充:新边缘设置。全部(8.0), 子项:新文本(ticketGroups[i][“used”].toString(), 样式:consttextstyle( fontSize:15.0,fontFamily:“Poppins”), ), 新复选框( 值:选中, 一旦更改:(值){ 设置状态(){ 选中=!选中; }); }),dart,flutter,Dart,Flutter,我只想勾选一张卡片,但是只要我勾选其中一张,所有的卡片都会被勾选。 此外,卡片是动态创建的,这会导致问题吗?我认为您需要为每个复选框指定自己的标识。当您动态创建它们时,请将它们称为selected1、selected2等。正如居特在评论中所说,您需要为每个卡片/列表项创建索引。目前为止,我看到的最佳选择是使用列表视图和项目建筑商,类似这样的: bool selected = false; new Card( shape: selected

我只想勾选一张卡片,但是只要我勾选其中一张,所有的卡片都会被勾选。
此外,卡片是动态创建的,这会导致问题吗?

我认为您需要为每个复选框指定自己的标识。当您动态创建它们时,请将它们称为selected1、selected2等。

正如居特在评论中所说,您需要为每个卡片/列表项创建索引。目前为止,我看到的最佳选择是使用列表视图和项目建筑商,类似这样的:

  bool selected = false;

   new Card(
          shape: selected
              ? new RoundedRectangleBorder(
              side: new BorderSide(color: Colors.blue, width: 2.0),
              borderRadius: BorderRadius.circular(4.0))
              : new RoundedRectangleBorder(
              side: new BorderSide(color: Colors.white, width: 2.0),
              borderRadius: BorderRadius.circular(4.0)),

          child: new Row(


              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: <Widget>[



            new Padding(
              padding: new EdgeInsets.all(8.0),
              child: new Text("${ticketGroups[i]['ticket_name']}",
                  style: const TextStyle(
                      fontSize: 15.0, fontFamily: 'Poppins')),
            ),
            new Padding(
              padding: new EdgeInsets.all(8.0),
              child: new Text(ticketGroups[i]["used"].toString(),
                  style: const TextStyle(
                      fontSize: 15.0, fontFamily: 'Poppins')),
            ),

            new Checkbox(
                value: selected,
                onChanged: (value) {
                  setState(() {
                    selected = !selected;
                  });

                })

您需要为每一行指定一个不同的
selected
值。您的代码不清楚如何处理该值。如何为每一行指定一个不同的selected值?上面列出了实现选择的所有函数,实际上就是它。请添加显示如何创建行的代码。从您使用的代码来看,这有点困难ovided。您还可以删除所有与布局相关的代码,以便更容易地了解代码的意图。布局与手头的问题无关。感谢您的帮助!谢谢!很高兴提供帮助。
return new ListView.builder(
  itemBuilder: (context, index) => new Card(
      shape: selected[index]
          ? new RoundedRectangleBorder(
          side: new BorderSide(color: Colors.blue, width: 2.0),
          borderRadius: BorderRadius.circular(4.0))
          : new RoundedRectangleBorder(
          side: new BorderSide(color: Colors.white, width: 2.0),
          borderRadius: BorderRadius.circular(4.0)),
          ...
  itemCount: selected.length, // Tell itemBuilder how many items the list has
  ... // Rest of your code...
);