dart空安全
一. 空安全的使用 类型? || ?? || 值!
// int value = <String, int>{'one': 1}['one']; // ERROR
// map对象取值时,可能为空,这里给类型加一个 ?
// int? value = <String, int>{'one': 1}['one']; // SUCCES
// 当确定取到的值肯定不是空的 , 增加 !
// int value = <String, int>{"one" : 1}["one"]!;
// 或者使用 ??
// var aMap = <String, int>{'one': 1};
// int value = aMap["one"] ?? 0 ;
// print(value);
二. 列表类型的空安全使用
// List<String> arr = ["one" , "two"];
// print(arr[0].length); // SUCCES
// List<String?> arr = ["one"];
// print(arr[0].length); // ERROR
// print(arr[0]?.length); // SUCCES
// List<String>? arr = ["one"];
// print(arr[0].length); // SUCCES
// print(arr.length); // SUCCES
// List<String?>? arr = ["one"];
// print(arr.length); // SUCCES
// print(arr[0].length); // ERROR
// print(arr[0]?.length); // SUCCES
三. 映射类型的空安全使用
// Map<String , int> aMap = {'one' : 1};
// print(aMap["one"].toString()); // SUCCES
// Map<String , int?> aMap = { "one" : 1 };
// print(aMap["one"].length); // ERROR
// print(aMap["one"]?.toString()); // SUCCES
// Map<String , int?>? aMap = { "one" : 1};
// print(aMap["one"].toString()); // SUCCES