非常簡單和 "無知 "的問題,但在dart中!是做什么的?
這里有一個例子:
File? _selectedFile。
小工具joe() {
if (_selectedFile != null) {
return Image.file(
_selectedFile!, //不能做_selectedFile?
width: 250,
高度。250。
適合。BoxFit.cover。
);
}
return Text("mama"/span>)。
}
我知道?在File? _selectedFile意味著_selectedFile被允許為空。但當我在Widget函式中執行_selectedFile?時,它拋出了錯誤,但當我執行_selectedFile!時,它卻作業了。為什么會這樣?
uj5u.com熱心網友回復:
感嘆號是一個危險但強大的運算子。
它告訴編譯器假設該值不是空的。
當你這樣做時,該型別被從一個可歸零的型別轉換為一個不可歸零的型別,并且可以在只接受不可歸零值的地方使用。
當你這樣做時,你必須完全相信你的代碼不會意外地使用一個空值。
。在您的特定情況下,我們可以確定該值不是空值,因為您的if陳述句會檢查這一點。
正因為如此,我想你可以直接使用 _selectedFile 而不需要任何額外的運算子。當你這樣做時,你迫使編譯器證明你的代碼的安全性,而不是你只相信自己。如果編譯器滿意,代碼就會被編譯。我沒有使用過Dart,所以我不知道編譯器有多聰明,但希望它能處理這種情況,而不要求你用!運算子來冒險。
uj5u.com熱心網友回復:
在支持null安全的新版本dart中 :
在你的代碼中
? : 表示_selectedFile可以是null
如果你在_selectedFile后面添加了!,這意味著你告訴編譯器與你已經宣告的內容相反,!是用來讓編譯器知道_selectedFile永遠不會為空!看到你在這里做什么了嗎?
!=意味著 "如果不是"
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/313091.html
標籤:
上一篇:將影像與文本基線在一行中對齊
