Flutter 关于String isNotEmpty 判空

Dart String

    • String
      • 示例
      • 判空问题
        • 场景一
        • 场景二
        • 场景三
      • 总结

String

Dart 里的 String是不可变对象;要检测两个 String 的内容是否一样时,我们使用 == 进行比较;如果要测试两个对象是否是同一个对象(indentity test),使用 identical 函数。

示例

void _stringDeals() {
    var abc = ' abc ';

    ///带空格
    var abcUp = abc.toUpperCase();

    ///字符大写
    var abcTrim = abc.trim();

    ///去掉空格
    ///assert 是语言内置的断言函数,仅在检查模式下有效,如果断言失败则程序立刻终止
    ///判断内容是否相等
    assert(abc == abcUp);

    ///判断对象是否相等
    assert(!identical(abc, abcUp));
    
  }
  }

关键语句
Dart 里所有的东西都是对象,包括 int、函数。

判空问题

场景一

用String Api 的 length 函数 去判断

var value = "1234567";
if (value.length != 0) {
      print("value不为空");
    }
    

这样会遇到一个问题就是value 如果为Null 那么Flutter就红屏了 程序结束

var value = null;
程序出错结束

非常不推荐这么取判断

场景二

那么我们用String Api的 isNotEmpty 函数 去判断

var value = "1234567";
 if (value.isNotEmpty) {
      print("value不为空");
    }

这样我们又会碰到同样的问题就是如果value=null

var value = null;
程序抛出异常
Another exception was thrown: NoSuchMethodError: 
The getter 'isNotEmpty' was called on null.
出错点后面的程序都不会继续执行

场景三

我们用String != null 去判断

var value = "1234567";
 if (null !=value ) {
      print("value不为空");
    }

这样我们碰到value=null 或者 value有值就不会报错
这样的场景多发生在后端给返回的字符串String 是null 的情况

总结

结合实际出发 后端规范那就不需要去用!=null 来判断 ,但是不能用value.length函数来判断,这样非常有问题。保守就是使用null !=value

你可能感兴趣的:(Flutter,Flutter,采坑记录)