在使用Flutter时,我正在浏览代码。我看到了我不理解的运算符??
。
SharedPreferences prefs;
prefs = await SharedPreferences.getInstance();
id = prefs.getString('id') ?? '';
nickname = prefs.getString('nickname') ?? '';
aboutMe = prefs.getString('aboutMe') ?? '';
photoUrl = prefs.getString('photoUrl') ?? '';
答案 0 :(得分:1)
??运算符是“如果为空”的缩写 它检查该值是否为空,并相应执行替代代码。 如您的代码
id = prefs.getString('nickname') ?? '';
它检查共享首选项中的昵称是否为空。如果为null,则为id分配一个空字符串,否则将保持原始值。
要获得有关Dart运算符的进一步帮助,请转到dart语言导览并通过在浏览器中键入CTRL + F
来搜索所需的运算符。您一定会找到它。
此运算符在dart中称为Null合并运算符。谢谢@CrazyLazyCat
阅读有关此链接的详细信息的链接为here
希望有帮助。
答案 1 :(得分:1)
答案 2 :(得分:1)
??
是 Dart
result = leftSideValue ?? rightSideValue
它检查左侧值是否为空。如果左侧值为null,则将默认值(右侧)分配给结果。
示例1
var data1;
var data2 = data1 ?? "Default value";
print(data2); // Default value
示例2
var data1 = "Some Value";
var data2 = data1 ?? "Default value";
print(data2); // Some value
中了解更多信息
答案 3 :(得分:0)
语法:
<Expression>??<Value if expression is null>;
??的示例
int a; int b = a ?? 0;
这将'0'的值分配给'b',因为'a'为空。可以重写为
int a;
int b;
if(a==null){
b=0;
}else{
b=a;
}
答案 4 :(得分:0)
如果使用??
时,左侧表达式的值为 null
,则右侧表达式将返回:
final number = null ?? 6; // number will be assigned 6
int a;
int b = a ?? 5 ?? 3; // b will be assigned 5 because a is null
这称为空合并运算符,您可以find out more about it here。 Dart中还有其他可识别空值的运算符,您可以learn more about here。
您可以随意链接此运算符多次,因为我一开始提到的规则一直都适用:
int a = null ?? null ?? null ?? 42; // a will be assigned 42
int b = null ?? () { return 4; }() ?? 2; // b will be assigned 4