Flutter 關於String isNotEmpty 判空
阿新 • • 發佈:2019-01-01
Dart 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