有没有一种方法可以简化此条件子句:

if (_username != null &&_username.isNotEmpty  && _pass != null && _pass.isNotEmpty){
      connectionBloc.dispatch(GetUserInfoEventImpl(_username, _pass));
    }

使用Null-Aware运算符?

我试过了:
if (_username?.isNotEmpty?? false && _pass?.isNotEmpty?? false){
      connectionBloc.dispatch(GetUserInfoEventImpl(_username, _pass));
    }

但是我认为这是有问题的,因为Android Studio指出无法达到右侧的条件,这是不正确的。

最佳答案

使用null感知访问,您必须将结果显式比较true或false:

  if (_username?.isNotEmpty == true && _pass?.isNotEmpty == true) {
    ...
  }

至于您的变体,该代码没有括号,因为Null coalescence operator的优先级最低:
  if ((_username?.isNotEmpty ?? false) && (_pass?.isNotEmpty ?? false)) {
    ...
  }

关于flutter - Dart-如何使用NullAware运算符简化IF条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57781011/

10-09 04:22