flutter - "必须初始化不可为空的实例字段 '_items'。\n尝试添加一个初始化器
问题描述
我正在尝试为购物车制作一个模式,但这给了我一个错误。我的 dart sdk 版本:2.12.0>3.0.0
我尝试在此地图之前使用“延迟”,但它在输出结果中出现错误,即延迟初始化错误:字段“_items”尚未初始化
Map<String, CartItem> _items;
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
class CartItem with ChangeNotifier {
final String id;
final String title;
final int quantity;
final double price;
CartItem(
{required this.id,
required this.title,
required this.price,
required this.quantity});
}
class Cart with ChangeNotifier {
Map<String, CartItem> _items; //error _items
Map<String, CartItem> get items {
return {..._items};
}
int get itemcount {
return _items.length;
}
void addItems(String productId, double price, String title) {
if (_items.containsKey(productId)) {
_items.update(
productId,
(existing) => CartItem(
id: existing.id,
title: existing.title,
price: existing.price,
quantity: existing.quantity + 1),
);
} else {
_items.putIfAbsent(
productId,
() => CartItem(
id: DateTime.now().toString(),
title: title,
price: price,
quantity: 1));
}
}
}
解决方案
用空映射初始化_items
变量。{}
Map<String, CartItem> _items = {};
推荐阅读
- scala - org.apache.spark.sql.AnalysisException:在 SELECT 子句之外不支持生成器,但得到:'Agg
- opencv - 如何提高相机外参标定的准确性
- python-3.x - Inception v3 retraining with tensorflow 问题如何释放 retrained_graph.pb
- pandas - 如何将 3 列中的日期时间值合并为 pandas 数据框中的单列?
- angular - 如何在Angular中的可拖动包装列表中分配视图之间的剩余空间?
- nginx - 通过其他代理工作的 Nginx
- rest - .Net Framework 4.8 中的授权使用 OpenIdentity4 返回 Unauthorized
- python - 将 QR 解码解决方案从 Python 转换为 C# (EU DGC)
- xaudio2 - XAudio2:如何获取 AudioSystem 的当前时间
- mongodb - 在 MongoDB 文档中插入更多属性