1. 程式人生 > >Flutter 關於String isNotEmpty 判空

Flutter 關於String isNotEmpty 判空

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