Flutter TextField组件onChange条件函数无法执行问题求助
问题原因
你当前的代码里,条件运算符的两个分支只是定义了异步匿名函数,但完全没执行这些函数,所以不管邮箱校验结果是true还是false,分支里的print都不会触发。
修复方案
方案一:直接执行逻辑(推荐,无需多余函数包裹)
如果分支里的逻辑不需要单独封装,直接把代码写在条件分支里就行:
onChanged: (v) async { print(EmailValidator.validate(v)); if (EmailValidator.validate(v)) { print('email tureeee'); } else { print('email not trueee'); } },
也可以用条件运算符简化(逻辑复杂时还是if更清晰):
onChanged: (v) async { print(EmailValidator.validate(v)); EmailValidator.validate(v) ? print('email tureeee') : print('email not trueee'); },
方案二:调用匿名函数(如果必须保留函数封装)
如果分支逻辑确实需要封装成异步函数,要在定义后立即加()执行:
onChanged: (v) async { print(EmailValidator.validate(v)); EmailValidator.validate(v) ? await (() async { print('email tureeee'); })() // 加()执行函数 : await (() async { print('email not trueee'); })(); // 加()执行函数 },
如果函数是异步的,记得用await等待执行完成(按需使用)。
内容的提问来源于stack exchange,提问作者chichi
相关产品推荐
相关产品推荐

