1. dart 在線編輯器
一般一些簡單的 dart 測試我們可以直接用在線編輯器來做測試和驗證。
下面給大家介紹的兩個都是官網的。
dart 在線運行器主頁版:👇
https://www.dartlang.org/guides/get-started
dart 在線運行器全屏版:👇
https://dartpad.dartlang.org/null
2. dart ?.
左邊如果為空返回 null,否則返回右邊的值。
A?.B 如果 A 等於 null,那么 A?.B 為 null 如果 A 不等於 null,那么 A?.B 等價於 A.B |
void main() { Animal animal = new Animal('cat'); Animal empty = null; //animal 非空,返回 animal.name 的值 cat print(animal?.name); //empty 為空,返回 null print(empty?.name); //animal 非空,可以直接訪問 animal.name 的值 cat print(animal.name); //empty 為空,拋出異常 print(empty.name); } class Animal { final String name; Animal(this.name); }
3. dart ??
左邊如果為空返回右邊的值,否則不處理。
A??B 如果 A 等於 null,那么 A??B 為 B 如果 A 不等於 null,那么 A??B 為 A |
4. dart ?. ??
A?.b??'為空' A為空返回b 如果b為空返回字符----為空 A.xxx??b A.xxx為空則返回b的值 |
如下所示:
應用場景二

void main() { C c = new C('Case 1'); B b = new B(c); A a = new A(b); // C c = new C(null); // B b = new B(c); // A a = new A(b); // C c = new C('Case 2'); // B b = null; // A a = new A(b); //直接使用.來最終獲取 c 的變量 value if (a != null && a.bMember != null && a.bMember.cMember != null) { print(a.bMember.cMember.value); } else { print(null); } //直接使用.來最終獲取 c 的變量 value,為空時返回 unknown if (a != null && a.bMember != null && a.bMember.cMember != null) { String value = a.bMember.cMember.value; if (value == null) { value = 'unknown'; } print(value); } else { print('unknown'); } //dart 使用?.來最終獲取 c 的變量 value print(a?.bMember?.cMember?.value); //dart 使用?.來最終獲取 c 的變量 value,為空時使用 ?? 返回 unknown print(a?.bMember?.cMember?.value??'unknown'); } class A { final B bMember; A(this.bMember); } class B { final C cMember; B(this.cMember); } class C { final String value; C(this.value); }