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