我有一个配置单元对象,如下所示:
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);