textfield onChanged() {setstate} 在 flutter 中不起作用

SIL*_*MUS 1 textfield setstate flutter

我想在用户在文本字段上输入至少一个字符时更改按钮的颜色\n还想在文本字段为空时更改颜色

\n

所以我尝试标记(布尔值)来实现它

\n
onChanged: (value) {\n    if (value.length == 0) {\n      setState(() {\n        _isTimeFilled = false;\n      });\n    } else {\n      setState(() {\n        _isTimeFilled = true;\n      });\n    }\n},\n\n...\n\n_isFilled ? Colors.grey : Colors.green\n\n
Run Code Online (Sandbox Code Playgroud)\n

但它只会在文本字段未聚焦时改变颜色

\n

我也尝试过提供商,但结果是一样的。\n我该如何解决这个问题?

\n

这是我的代码

\n
    void _changeButtonColor(int value) {\xe2\x9c\x85\xe2\x9c\x85\xe2\x9c\x85\xe2\x9c\x85\n    if (value == 0) {\n      setState(() => _isTimeFilled = false);\n    } else {\n      setState(() => _isTimeFilled = true);\n    }\n  }\n  \n    TextFormField TimeTextFormField() {\n    return TextFormField(\n      focusNode: timeFocusNode,\n      autofocus: true,\n      keyboardType: TextInputType.number,\n      textInputAction: TextInputAction.next,\n      onChanged: (value) {\n        _changeButtonColor(value.length);\xe2\x9c\x85\xe2\x9c\x85\xe2\x9c\x85\xe2\x9c\x85\n      },\n      \n      \n      RaisedButton(\n            focusColor: Colors.white,\n            splashColor: Colors.white,\n            shape: RoundedRectangleBorder(\n              borderRadius: BorderRadius.circular(6.0),\n            ),\n            onPressed: () {},\n            color: _isTimeFilled ? Colors.greenAccent : Colors.grey, \xe2\x9c\x85\xe2\x9c\x85\xe2\x9c\x85\xe2\x9c\x85\n            textColor: Colors.white,\n            child: Padding(\n              padding: const EdgeInsets.all(8.0),\n              child: SizedBox(\n                  width: double.infinity, child: Icon(Icons.check)),\n            ),\n          ),\n        ),\n
Run Code Online (Sandbox Code Playgroud)\n

小智 6

做这个:

onChanged: (value) {
    _isTimeFilled = (value != 0);
    setState(() { });
},
Run Code Online (Sandbox Code Playgroud)