簡體   English   中英

我在 dart 操作員操作中遇到錯誤

[英]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 值而遇到異常的方式。

有兩種方法可以處理這個問題。

  1. 危險選項:告訴 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 它將導致您的整個程序崩潰

  2. 安全選項:提供后備值。

    如果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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM