gpt4 book ai didi

button - 如何根据条件将禁用按钮变成启用按钮

转载 作者:行者123 更新时间:2023-12-04 14:41:19 28 4
gpt4 key购买 nike

我是新手,只要某些文本字段为空,我就试图禁用按钮,所以我制作了 3 个文本 Controller 来充当 3 个文本字段的 Controller ,并且我制作了一个函数来检查该功能是:

bool isEmpty(){
setState(() {
if(textEditingController.text!=" "&&textEditingController2.text!=" "&& textEditingController3.text!=" "){
isButtonEnabled=true;


}
});
return isButtonEnabled;
}

文本字段的代码是:
TextField(
onSubmitted:null,

controller: textEditingController3,


)

然后我编写按钮的代码如下:
中心(
  child: RaisedButton(
child: Text("Button 1",style: TextStyle(color:Colors.white),),
onPressed:isButtonEnabled?(){ print("enabled");}:null,
color: Colors.red,

),

问题是即使我在文本字段中写入后,该按钮仍处于禁用状态。任何的想法?
提前致谢。
编辑:
感谢@diegoveloper 回答这行得通,但是如果我想输入初始值并且我希望按钮仅在文本字段具有如下文本字段值时启用,该怎么办:
@override
void initState() {
super.initState();
textEditingController = new TextEditingController(text: name);
textEditingController2 = new TextEditingController(text: email);
textEditingController3 = new TextEditingController(text: " place");


}

然后我将 isEmpty 方法更新为:
bool isEmpty(){
setState(() {
if((textEditingController.text!=" ")&&(textEditingController2.text!=" ")&& (textEditingController3.text!=" ")&&(textEditingController!=null)&&(textEditingController2!=null)&&(textEditingController3!=null)){
isButtonEnabled=true;



}
else{
isButtonEnabled=false;

}
});
return isButtonEnabled;
}

问题是尽管我给文本字段的缩写值仍然被禁用,而且当我编辑文本字段的 3 个值时,按钮被启用,但如果我删除了文本(我认为它的意思是空)按钮仍处于禁用状态。

最佳答案

你不需要任何额外的库来做到这一点。 Flutter 具有开箱即用的功能,您可以确保不会在每次击键时重建整个树。TextEditingController扩展 ValueNotifier<TextEditingValue>这意味着您可以使用 ValueListenableBuilder来自 material包收听文本变化。

class MyWidget extends StatelessWidget {
final TextEditingController _inputController = TextEditingController();

@override
void dispose() {
_inputController.dispose();
super.dispose();
}

@override
Widget build(BuildContext context) {
return Column(children: [
TextField(controller: _inputController),
ValueListenableBuilder<TextEditingValue>(
valueListenable: _inputController,
builder: (context, value, child) {
return ElevatedButton(
onPressed: value.text.isNotEmpty ? () {} : null,
child: Text('I am disabled when text is empty'),
);
},
),
]);
}
}

关于button - 如何根据条件将禁用按钮变成启用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52468987/

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