如何检查文本字段是否已填充然后更改按钮的颜色?
How to check if the text fields are filled then change the color of the button?
需要代码方面的帮助。我有一个注册页面,当有一个空白字段(用户未填写)时我正在检查 - 按钮没有触发。但是我也想做当有一个非空字段时,按钮的颜色是灰色的,但是当所有字段都被填充时,按钮的颜色变成紫色。我尝试这样做(使用 isButtonEnabled
)但是当所有字段都被填充时按钮本身不会改变颜色。说说这个功能如何实现,当字段全部非空时,按钮颜色为紫色,字段为空时-灰色?
控制器
EmailSignUpWidget(
size: size * 0.42,
nameEditingController: _nameEditingControllerReg,
passwordEditingController: _passwordEditingControllerReg,
emailEditingController: _emailEditingControllerReg,
)
按钮
DefaultButtonGlow(
text: isSignUp ? 'Sign Up' : 'Next',
color: isButtonEnabled ? constants.Colors.purpleMain : constants.Colors.grey,
onPressed: () async {
if ((_nameEditingControllerReg.text
.trim() !=
"") &&
(_passwordEditingControllerReg
.text
.trim() !=
"") &&
(_emailEditingControllerReg.text
.trim() !=
"")) {
_onTap(unauthUserCubit, tokenCubit);
isButtonEnabled = true;
} else {
isButtonEnabled = false;
}
},
shadowColor:
constants.Colors.purpleMain,
textStyle: constants
.Styles.normalHeavyTextStyleWhite,
),
如果您使用的是 TextField 或 TextFormField,我认为您需要使用 onChanged 属性.
当它改变时,检查字符串是否为空,或者您可以根据它进行更改。
TextField(
controller: textEditController,
onChanged: (content) {
},
)
您确实应该使用 onChanged 属性。但是,要确保涵盖多个用例还需要更多时间。
用例:用户从 TextField 中删除文本。操作:按钮应再次变为灰色。
为每个需要在按钮变为紫色之前填充的 TextField 创建一个布尔值。
bool textField1Filled = false;
bool textField2Filled = false;
bool textField3Filled = false;
在每个 TextField 小部件中,您都有以下 onChanged:
onChanged: (content) {
if (content != "") {
textField1Filled = true;
if (textField1Filled && textField2Filled && textField3Filled) {
setState((){isButtonEnabled = true;});
}
} else {
textField1Filled = false;
setState((){isButtonEnabled = false;});
}
},
)
需要代码方面的帮助。我有一个注册页面,当有一个空白字段(用户未填写)时我正在检查 - 按钮没有触发。但是我也想做当有一个非空字段时,按钮的颜色是灰色的,但是当所有字段都被填充时,按钮的颜色变成紫色。我尝试这样做(使用 isButtonEnabled
)但是当所有字段都被填充时按钮本身不会改变颜色。说说这个功能如何实现,当字段全部非空时,按钮颜色为紫色,字段为空时-灰色?
控制器
EmailSignUpWidget(
size: size * 0.42,
nameEditingController: _nameEditingControllerReg,
passwordEditingController: _passwordEditingControllerReg,
emailEditingController: _emailEditingControllerReg,
)
按钮
DefaultButtonGlow(
text: isSignUp ? 'Sign Up' : 'Next',
color: isButtonEnabled ? constants.Colors.purpleMain : constants.Colors.grey,
onPressed: () async {
if ((_nameEditingControllerReg.text
.trim() !=
"") &&
(_passwordEditingControllerReg
.text
.trim() !=
"") &&
(_emailEditingControllerReg.text
.trim() !=
"")) {
_onTap(unauthUserCubit, tokenCubit);
isButtonEnabled = true;
} else {
isButtonEnabled = false;
}
},
shadowColor:
constants.Colors.purpleMain,
textStyle: constants
.Styles.normalHeavyTextStyleWhite,
),
如果您使用的是 TextField 或 TextFormField,我认为您需要使用 onChanged 属性.
当它改变时,检查字符串是否为空,或者您可以根据它进行更改。
TextField(
controller: textEditController,
onChanged: (content) {
},
)
您确实应该使用 onChanged 属性。但是,要确保涵盖多个用例还需要更多时间。
用例:用户从 TextField 中删除文本。操作:按钮应再次变为灰色。
为每个需要在按钮变为紫色之前填充的 TextField 创建一个布尔值。
bool textField1Filled = false;
bool textField2Filled = false;
bool textField3Filled = false;
在每个 TextField 小部件中,您都有以下 onChanged:
onChanged: (content) {
if (content != "") {
textField1Filled = true;
if (textField1Filled && textField2Filled && textField3Filled) {
setState((){isButtonEnabled = true;});
}
} else {
textField1Filled = false;
setState((){isButtonEnabled = false;});
}
},
)