onChanged: (v) async {
print(EmailValidator.validate(v));
EmailValidator.validate(v)
? () async {
print('email tureeee');
}
: () async {
print('email not trueee');
};
},我在onChange()小部件的TextField中有这个条件函数。print(EmailValidator.validate(v));似乎起作用了。但是,条件函数在满足条件时不会执行。
我怎么才能把这事做好?
发布于 2022-08-29 19:39:46
实际上,问题就在这里,您正在创建另一个函数。因为当文本更改时,onChanged调用。现在,基于验证,您正在创建另一个匿名函数,它需要调用才能执行。您可以简单地检查执行情况如下
TextFormField(onChanged: (value) {
value.isEmpty
? () async {
print('email tureeee');
}
: () async {
print('email not trueee');
};
})现在假设您喜欢使用这种格式来执行函数。为此,您可以创建和执行类似于(){...}()的函数
TextFormField(onChanged: (value) {
value.isEmpty
? () async {
print('email tureeee');
}()
: () async {
print('email not trueee');
}();
})同样的事情也适用于EmailValidator.validate(v)。但是,与其像这样嵌套,不如创建单个bool和handle操作,以获得干净的代码。
发布于 2022-08-29 19:19:24
试试这个:
onChanged: (v) async {
print(EmailValidator.validate(v));
if(EmailValidator.validate(v)){
print('email tureeee');
}else{
print('email not trueee');
}
},发布于 2022-08-29 19:28:42
您基本上是在创建一个匿名函数,它从未被调用过,在这里它是非常不必要的。
您可以简单地拥有如下所示的if-else
如果没有在async中使用await关键字,则可以避免使用onChanged
onChanged: (v) {
final result = EmailValidator.validate(v);
print(result);
if (result) {
print('email tureeee');
} else {
print('email not trueee');
}
},https://stackoverflow.com/questions/73533593
复制相似问题