如何在 Hive List flutter

问题描述

我有一个 Hive 对象

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