dart 为什么setState()方法不起作用,尽管使相关变量为空

jm81lzqq  于 2023-07-31  发布在  其他
关注(0)|答案(3)|浏览(130)
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时将其更改为活动颜色(这不起作用)。

ijnw1ujt

ijnw1ujt1#

请在setstate中将selectedGender == Gender.male更改为selectedGender = Gender.male

setState(() {
   selectedGender = Gender.male;
});

字符串

s71maibg

s71maibg2#

再看看你的setState()方法。这里的代码selectedGender == Gender.male;没有给selectedGender分配新的值,所以因为状态保持不变,所以状态不会更新。使用=而不是==来更新selectedGender变量的值。

setState(() {
   selectedGender = Gender.male;
});

字符串

jdgnovmf

jdgnovmf3#

请正确赋值

setState(() {
                    selectedGender = Gender.male;
                  });

字符串

相关问题