class _InputPageState extends State<InputPage>{
Gender? selectedGender;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: mainColor,
appBar: AppBar(
title: Text(
'BMI Calculator'
),
backgroundColor: Colors.transparent,
elevation: 0,
centerTitle: true,
),
body: Column(
children: <Widget>[
Expanded(
child: Row(
children: [
Expanded(
child: GestureDetector(
child: ReusableCard(
colour: selectedGender == Gender.male ? activeCardColor : inactiveCardColor,
cardChild: IconContent(
icon: FontAwesomeIcons.mars,
label: 'MALE',
),
),
onTap: (){
setState(() {
selectedGender == Gender.male;
});
},
),
),`
字符串
”
setState()方法不更新卡片颜色,尽管设置了Gender?selectedGender为空,为什么会发生这种情况?
我已经尝试将selectedGender
更改为late
,但它给出了LateInitializationError
,我希望colour: selectedGender == Gender.male ? activeCardColor : inactiveCardColor
将颜色设置为inactiveCardColor(这工作正常),然后setState()方法应在Tap时将其更改为活动颜色(这不起作用)。
3条答案
按热度按时间ijnw1ujt1#
请在setstate中将
selectedGender == Gender.male
更改为selectedGender = Gender.male
字符串
s71maibg2#
再看看你的
setState()
方法。这里的代码selectedGender == Gender.male;
没有给selectedGender分配新的值,所以因为状态保持不变,所以状态不会更新。使用=
而不是==
来更新selectedGender变量的值。字符串
jdgnovmf3#
请正确赋值
字符串