我有一个函数checkAvailability,如果条件匹配,它会将变量isTaken的状态更改为true。
checkAvailabiltiy(String text){
for(var snapshot in allData){
var name = snapshot['username'].toString().toLowerCase();
if(text.toLowerCase() == name){
setState(() {
isTaken =true;
});
} else{
}
}}
一旦条件匹配,变量就会改变其状态。但是在那之后,即使条件不匹配,变量仍然是一样的。我怎么能把它改回假的呢?
TextFormField(
onChanged: (value) {
// print("${value}hola");
checkAvailabiltiy(value);
print(isTaken);
},)
我尝试在else情况下使用setState,但它不起作用。
2条答案
按热度按时间rxztt3cl1#
你也应该使用setState。下面是代码的更新版本:
使用此代码,当找到匹配项时,isTaken将被设置为true,如果在循环中没有找到匹配项,则将被设置为false。这样,当条件不匹配时,它将正确地将状态重置为false。
wlwcrazw2#
要解决这个问题,您需要在else语句中将isTaken变量设置为false。您可以按如下方式执行此操作:
这段代码将在TextFormField的onChanged()回调中检查用户名的可用性。如果用户名可用,isTaken变量将被设置为false。否则,isTaken变量将被设置为true。