Flutter 關於String isNotEmpty 判空

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章