[英]I am getting error in dart operator operation
color:sensorver?.leftMotorSpeed <= 50 ? Colors.amber : Colors.red,
我想用上面的代碼改變顏色。 如果傳入的數據小於 50,如果不是琥珀色,我想將其設為紅色。 但是我在運算符部分(<=)中遇到錯誤。 你能幫忙修一下嗎?
檢查這個
color: sensorver!.leftMotorSpeed <= 50 ? Colors.amber : Colors.red,
您需要檢查第一個傳感器是 null 或不是如下:
color: sensorver!=null&&sensorver!.leftMotorSpeed <= 50 ? Colors.amber : Colors.red,
為了擴展 Sabahat 的答案,這些是 Dart 中的null 安全運算符。
sensorver?.leftMotorSpeed
基本上意味着'如果sensorver
不是 null,請給我leftMotorSpeed
的值。
因此,當您嘗試查看它是否小於或等於 50 時會出現錯誤,因為您無法將可能是 null 的東西與數字 50 進行比較,這絕對不是 null。 這是 dart 試圖確保您在運行時不會因為 null 值而遇到異常的方式。
有兩種方法可以處理這個問題。
危險選項:告訴 Dart 你知道sensorver
絕對不是 null (沙巴的回答)。
你可以告訴 dart 你知道某些sensorver
不是 null 與!
操作員。 這基本上是在告訴 Dart '閉嘴警告,我知道這永遠不會為空'。 因此,Sabahat 對color: sensorver.?leftMotorSpeed <= 50. Colors:amber. Colors,red,
color: sensorver.?leftMotorSpeed <= 50. Colors:amber. Colors,red,
將工作。
但是,如果sensorver
曾經是 null 它將導致您的整個程序崩潰
安全選項:提供后備值。
如果sensorver
可以是 null,則安全選項是提供 dart 將在 null 的情況下使用的備用值。 這可以通過??
操作員。 例如:
color: sensorver?.leftMotorSpeed?? 0 <= 50? Colors.amber: Colors.red,
這意味着如果sensorver
不是 null 它將為您提供leftMotorSpeed
的值。 但是,如果sensorver
是 null,它將為您提供后備值0
。 備用值可以是您喜歡的任何值,只要保證它不是 null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.