gpt4 book ai didi

flutter - 在StatefulWidget Flutter中访问变量的最佳方法

转载 作者:行者123 更新时间:2023-12-03 04:56:47 30 4
gpt4 key购买 nike

我正在尝试创建一个单选按钮小部件。
在我必须获取按钮状态之前,一切都很好。 (是否单击)

我做了一些非常简单的事情,在StatefulWidget中创建了一个bool变量,并在状态类中使用它来在单击时更新小部件,然后在StatefulWidget中使用函数返回此变量。

它运作良好,但是给了我这个警告:

This class (or a class that this class inherits from) is marked as '@immutable', but one or more of its instance fields aren't final: RadioButton._isSelecteddart(must_be_immutable)

但是,如果我在状态类中声明变量,应该如何访问变量呢?

我看到了很多解决此问题的方法,但是对于像这样的简单问题,它们看起来都太多了。

这是我的StatefulWidget:
class RadioButton extends StatefulWidget{

bool _isSelected = false;

bool isSelected() {
return _isSelected;
}

@override
_RadioButtonState createState() => new _RadioButtonState();
}

我的状态:
class _RadioButtonState extends State<RadioButton> {


void _changeSelect(){
setState(() {
widget._isSelected = !widget._isSelected;
});
}

@override
Widget build(BuildContext context){
return GestureDetector(
onTap: _changeSelect,
child: Container(
width: 16.0,
height: 16.0,
padding: EdgeInsets.all(2.0),
decoration: BoxDecoration(
shape: BoxShape.circle,
border: Border.all(width: 2.0, color: Colors.black)),
child: widget._isSelected
? Container(
width: double.infinity,
height: double.infinity,
decoration:
BoxDecoration(shape: BoxShape.circle, color: Colors.black),
)
: Container(),
)
);
}
}

并访问变量,我将小部件声明为我的应用程序类的变量,并在其上使用isSelected函数:
  RadioButton myRadio = new RadioButton();

...

print(myRadio.isSelected()); //For exemple

我可以让这段代码,但我想学习最好的方法。

最佳答案

提议的方法也是正确的,但是首选的方法是将它们包含在State类中,因为它可以维护小部件的状态

范例:

class _RadioButtonState extends State<RadioButton> {

bool _isSelected = false;

bool isSelected() {
return _isSelected;
}
// other code here

}

关于flutter - 在StatefulWidget Flutter中访问变量的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60433321/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com