相關代碼
import 'package:flutter/foundation.dart'。
class CartItem {
final String id;
final String title;
final int quantity;
final double price;
購物車專案({
required this.id。
required this.title,
required this.quantity,
required this.price。
});
}
class Cart with ChangeNotifier{
Map<String, CartItem> _items = {}; //看到我已經初始化了物品。
我得到null安全錯誤的代碼'屬性'數量'不能被無條件地訪問,因為接收器可能是'null'。 試著使訪問有條件(使用'?')或在目標中添加一個空檢查('!')。我得到的錯誤是在下面的quantity變數上。我不知道如何解決這個問題。我看了一些關于int?, !和?: 運算子的視頻,但是沒有涉及這個特殊的場景。
if (_items[productID].quantity == 1) _items.remove(productID)。
額外的問題,這里的錯誤指向的接收器是什么,它可以是空的嗎?
uj5u.com熱心網友回復:
這是因為你試圖通過傳遞一個鍵來訪問地圖中的一個有效資訊。
如果id作為一個鍵存在于地圖中,那么你確實會有一個 cartitem 物件。但是如果id不存在,結果將是null,而你的操作將變成null.quantity.
這里的接收器是你的購物車物件。
嘗試:
_items[productID]!
這樣一來,你向dart承諾不可能是空的。你的錯誤會消失,但這是一個危險的操作。解決這個問題的正確方法是,在呼叫 quantity 之前,確保它不是空的。
在你的if陳述句之前,這樣做:
在你的if陳述句之前,這樣做。
if(_items[productID] ! = null) if(_items[productID]!.quantity == 1) _items.remove(productID) 。
這樣一來,你肯定不會進入你的第二個if陳述句,除非cartitem不是空的,100%。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/313093.html
標籤:
上一篇:RecyclerView的ViewHolder在不應該的情況下改變視圖
下一篇:試圖從void/string顯示文本,得到"Closure:(dynamic)=>voidfromFunction?
