這里我先只記錄一下比較常用到的。
as:類型轉(zhuǎn)換
只有你確定這個對象是該類型的時候,才可以使用as把對象轉(zhuǎn)換為特定的類型
(employee as Person).firstName = 'xxxx';
is:如果對象是指定類型則返回true
is!:如果對象是指定類型則返回false
在你不確定這個對象類型的時候,用作判斷是否是該類型檢測。
if(str is String){}
賦值運算符=、??=
a = value;
b ??= value;//判斷b是否為null,如果為null,value為b的默認值。
條件表達式
1、條件 ? 表達式1 :表達式2?
如果條件為true,執(zhí)行表達式1,否則執(zhí)行表達式2
2、表達式1 ?? 表達式2
如果表達式1非null,執(zhí)行表達式1,否則執(zhí)行表達式2
例如:
根據(jù)布爾表達式確定賦值時,請考慮使用???和?:
var visibility = isPublic ? 'public' : 'private';
如果賦值是根據(jù)判定是否為 null 則考慮使用???。
String playerName(String? name) => name ?? 'Guest';
上述示例還可以寫成至少下面兩種不同的形式,只是不夠簡潔:
String playerName(String? name) => name != null ? name : 'Guest';
String playerName(String? name) {??
? ? ?if (name != null) { ? ?
? ? ? ? ?return name;??
? ? ?} else {? ?
? ? ? ? ?return 'Guest';??
? ? }
}
流程控制語句for循環(huán)、for in遍歷、forEach()
1、for (var i = 0; i < 5; i++) {}
2、for (String c in List) { }
3、var collection = [1, 2, 3];collection.forEach(print); // 1 2 3
async ?&& await?
async函數(shù)異步執(zhí)行
必須在帶有 async 關(guān)鍵字的?異步函數(shù)?中使用?await:
Future<void> checkVersion() async {??
? ? var version = await lookUpVersion();?
}
late 延遲初始化變量
聲明一個非空變量,但不在聲明時初始化
也就是可以理解成延遲加載(懶加載),在需要的時候再進行初始化
final ?實例變量
可以使用關(guān)鍵字?final?或者?const?修飾變量,這兩個關(guān)鍵字可以替代?var?關(guān)鍵字或者加在一個具體的類型前。一個 final 變量只可以被賦值一次;一個 const 變量是一個編譯時常量 (const 變量同時也是 final 的)。
final name = 'Bob';?
你不能修改一個final變量的值
?name = 'Mary';
const 實例變量
使用關(guān)鍵字?const?修飾變量表示該變量為?編譯時常量。
如果使用 const 修飾類中的變量,則必須加上 static 關(guān)鍵字,即?static const(順序不能顛倒)。
在聲明 const 變量時可以直接為其賦值,也可以使用其它的 const 變量為其賦值
const bar = 100;
class HttpConfig {
? ?static const webPolicy ="https://www.baidu.com";
}