如何解决Flutter 将单选按钮逻辑应用到choicechip
我试图制作单选choicechip,但它不能正常工作。这是我的芯片:
<a class="searchEngineLink" gloss="What a great guy" href="http://www.bob.com">Bob</a>
<a class="searchEngineLink" gloss="What a smart guy" href="http://www.bob.com">Bob2</a>
<br>
<a class="searchEngineLink" gloss="What a handsome guy" href="http://www.bob.com">Bob3</a>
我是从,
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 ChipWidget extends StatelessWidget {
const ChipWidget({this.label,this.isSelected = false,this.onSelected});
final String label;
final bool isSelected;
final Function onSelected;
@override
Widget build(BuildContext context) {
return ChoiceChip(
label: Text(label),selected: isSelected,selectedColor: Colors.red,onSelected: onSelected,);
}
}
主屏幕
class HomeScreen extends StatefulWidget {
const HomeScreen({Key key}) : super(key: key);
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
List<String> _chipItems;
int selectedPos;
@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,isSelected: key == selectedPos,onSelected: (isSelected) {
setState(() {
selectedPos = key;
});
print('Selected: $selectedPos');
},)))
.values
.toList(),),);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。