某人正在尝试在我的listview.builder
上实施单选,以便在轻按某项时取消选择其他项,而仅选择最后的轻按。这是我的逻辑,但是现在它会进行多项选择,并且停留在如何使其成为单一项上。
FlatButton(
onPressed: () {
setState(() {
_bloc.similarProducts[index].selected =
!_bloc.similarProducts[index].selected;
});
},
child: Container(
height: 45,
width:120,
decoration: BoxDecoration(
border: Border.all(
color:!_bloc.similarProducts
[index].selected?
Colors.white:
Hexcolor("#DADE66"),
),
borderRadius: BorderRadius.circular(7),
color: !_bloc.similarProducts[index].selected?
Hexcolor("#DADE66"):
Colors.white,
),
padding: EdgeInsets.all(12),
child: Padding(
padding: const EdgeInsets.only(left:15.0, right:15.0),
child: Center(
child: Text(
!_bloc.similarProducts[index].selected?
"Select": "Selected",
style: TextStyle(
fontWeight: FontWeight.w700,
fontSize: 14,
fontFamily: 'Lato',
color: !_bloc.similarProducts
[index].selected?
Colors.white:
Hexcolor("#DADE66"),
),
),
),
),
),
),
],
);
}
),
答案 0 :(得分:0)
如果只想选择一个项目,则可以创建一个新值,将其称为selectedItem。 然后在FlatButton onPressed回调上,将selectedItem设置为要选择的项目的值(该值可以是索引,id或任何唯一标识符,可能是它本身的项目)。
然后您可以检查列表中每个项目的值是否等于您想要显示的值。
这样,当您选择新项目时,旧项目将被替换,因此最终只选择了一项。