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

标签 flutter dart

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

我做了一些非常简单的事情,在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/

相关文章:

dart - 是否可以在Dart中更改默认的构建目录?

dart - Google Authenticator 是否有任何 Dart 库?

flutter - 如何在 Flutter Web 中处理浏览器的后退按钮

Flutter 不同屏幕导航在 onTap 上使用不确定的 ListView

flutter - 如何更改饼图中的图例图标,我正在使用Charts_flutter 0.9.0

flutter - Hive Flutter,如何以相反的键顺序获取值

flutter - 如何在 flutter 对话框中添加圆形边框?

Flutter - 将背景渐变应用于可 ScrollView

dart - Flutter - NavigatorObserver 类是如何工作的?

dart - 暂停 Flutter 倒数计时器