首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >颤振: TextField onChange函数的条件

颤振: TextField onChange函数的条件
EN

Stack Overflow用户
提问于 2022-08-29 19:10:43
回答 3查看 42关注 0票数 0
代码语言:javascript
复制
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));似乎起作用了。但是,条件函数在满足条件时不会执行。

我怎么才能把这事做好?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-08-29 19:39:46

实际上,问题就在这里,您正在创建另一个函数。因为当文本更改时,onChanged调用。现在,基于验证,您正在创建另一个匿名函数,它需要调用才能执行。您可以简单地检查执行情况如下

代码语言:javascript
复制
TextFormField(onChanged: (value) {
  value.isEmpty
      ? () async {
          print('email tureeee');
        }
      : () async {
          print('email not trueee');
        };
})

现在假设您喜欢使用这种格式来执行函数。为此,您可以创建和执行类似于(){...}()的函数

代码语言:javascript
复制
TextFormField(onChanged: (value) {
  value.isEmpty
      ? () async {
          print('email tureeee');
        }()
      : () async {
          print('email not trueee');
        }();
})

同样的事情也适用于EmailValidator.validate(v)。但是,与其像这样嵌套,不如创建单个bool和handle操作,以获得干净的代码。

票数 1
EN

Stack Overflow用户

发布于 2022-08-29 19:19:24

试试这个:

代码语言:javascript
复制
  onChanged: (v) async {
      print(EmailValidator.validate(v));
      if(EmailValidator.validate(v)){
        print('email tureeee');
      }else{
        print('email not trueee');
      }
    },
票数 1
EN

Stack Overflow用户

发布于 2022-08-29 19:28:42

您基本上是在创建一个匿名函数,它从未被调用过,在这里它是非常不必要的。

您可以简单地拥有如下所示的if-else

如果没有在async中使用await关键字,则可以避免使用onChanged

代码语言:javascript
复制
onChanged: (v) {
  final result = EmailValidator.validate(v);
  print(result);
  
  if (result) {
    print('email tureeee');
  } else {
    print('email not trueee');
  }
},
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73533593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档