即使在setState之后,复选标记上也不会显示选中标记

时间:2019-03-15 09:41:32

标签: flutter

    Widget build(BuildContext context) {
    // TODO: implement build
    var TaskTextField;
    var _newValue = false;
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text("To-Do List V2 R1"),
        ),
        body: Container(
          child: Column(
            children: <Widget>[
              Container(
                child: TextField(
                  decoration:
                      InputDecoration(hintText: "Enter task to be added"),
                  onChanged: (taskTextField) {
                    TaskTextField = taskTextField;
                    print(TaskTextField);
                  },
                ),
                margin: EdgeInsets.all(16.0),
              ),
              Text("Click Me!"),
              Checkbox(
                activeColor: Colors.blue,
                value: _newValue,
                onChanged: (val) {
                  setState(() {
                    _newValue = !_newValue;
                  });
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

即使调试器在单击时显示_newValue为真,复选标记也不会显示。我尝试了其他方法,例如使用 _newValue = !_newValue,但仍然无法使用。我正在Flutter 1.2.1上运行。

1 个答案:

答案 0 :(得分:0)

每次执行函数时都会重新创建在函数/方法内部声明的变量。 setState()导致build()重新运行,因此每次将_newValue初始化为false

将字段移出build()方法以保留值

var _newValue = false;

Widget build(BuildContext context) {
  // TODO: implement build
  var TaskTextField;
  ...