问题描述
import 'package:hive/hive.dart';
part 'cartHiveModel.g.dart';
@HiveType(typeId: 0)
class CartModel extends HiveObject {
// for the product title
@HiveField(0)
late final String title;
// for checking the store id
@HiveField(1)
late final String storeID;
// fot the product image
@HiveField(2)
late final String image;
// for the discounted price
@HiveField(3)
late final int price;
// for the original price
@HiveField(4)
late final int originalPrice;
// for the quantity.
@HiveField(5)
late final int quantity;
CartModel({
required this.image,required this.originalPrice,required this.price,required this.quantity,required this.storeID,required this.title,});
}
当我尝试通过执行计算总金额时
var list = Hive.Box<CartModel>('cartModel').values;
list.reduce((value,element) => value.price + value.price);
The return type 'int' isn't a 'CartModel',as required by the closure's context.
我想要的:我想计算列表中的总金额,并以整数形式返回总和。
解决方法
reduce
的返回类型是您要缩减的列表的类型。您将通过添加返回 int
,但它期望返回 CartModel
。
相反,您可以 map
/reduce
,其中 map
首先创建一个 int
列表(price
属性):
list.map((item) => item.price).reduce((sum,price) => sum + price);
或者您可以使用fold
:
list.fold(0,(sum,item) => sum + item.price);