【发布时间】:2021-07-10 16:01:50
【问题描述】:
我试图制作单选选择芯片,但它不能正常工作。这是我的芯片:
class ChipWidget extends StatefulWidget {
const ChipWidget({Key key, this.label, this.listIndex}) : super(key: key);
final String label;
final int listIndex;
@override
_ChipWidgetState createState() => _ChipWidgetState();
}
class _ChipWidgetState extends State<ChipWidget> {
int selectedIndex = 0;
@override
Widget build(BuildContext context) {
return ChoiceChip(
label: Text(widget.label),
selected: selectedIndex == widget.listIndex,
selectedColor: Colors.red,
onSelected: (value) {
setState(() {
selectedIndex = value ? widget.listIndex : null;
});
print("Selected: " + selectedIndex.toString());
},
);
}
}
我打电话来的,
class HomeScreen extends StatefulWidget {
const HomeScreen({Key key}) : super(key: key);
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
List<String> _chipItems;
@override
void initState() {
super.initState();
_chipItems = ["Terleme", "Aşırı Düşünme", "Baş Ağrısı", "Mide Bulantısı"];
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
height: MediaQuery.of(context).size.height,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Center(
child: Wrap(
children: _chipItems
.asMap()
.map((key, value) => MapEntry(
key,
ChipWidget(
label: value,
listIndex: key,
)))
.values
.toList(),
),
),
),
),
);
}
}
当我点击一个芯片时,它被选中。但是当我选择一个新的时,旧的仍然被选中。我不想多选。我一次只想要一个。我需要在我的代码中更改什么?谢谢。
【问题讨论】: