如何执行.减少配置单元列表的颤动



我有一个配置单元对象,如下所示:

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);

最新更新