无法从Dart中的另一个类访问类的属性值



我试图从另一个类访问类的属性值,但无法这样做。我可能做错了,所以我在这里寻找答案。

在我的应用程序中有一个叫做CartRepository的类,它保存购物车中的物品。

class CartRepository {
List<Product> cartItems = [];
List<Product> get getCartItems => cartItems;

void addItem(Product product) {
cartItems.add(product);
}
}

通过block,我通过创建cartrerepository对象来更新cartItems的值。

还有一个叫做OrderRepository的类,我需要从cartrerepository中引入cartItems以及来自UI的其他信息,并在数据库中更新它。

但是当我在OrderBloc内部为CartRepository创建另一个对象并访问cartItems时,它返回的值是一个空List。我如何访问在另一个地方有数据的cartitem ?

OrderBloc

class OrderProviderBloc extends Bloc<OrderProviderEvent, OrderProviderState> {
OrderProviderBloc() : super(OrderProviderInitial());
CartRepository cartRepository = CartRepository();
OrderRepository orderRepository = OrderRepository();

@override
Stream<OrderProviderState> mapEventToState(
OrderProviderEvent event,
) async* {
if (event is PlaceOrderEvent) {
try {
orderRepository.placeOrder(cartRepository.cartItems,event.userMobileNumber);
} on Exception {}
}
}
}

OrderRepository

class OrderRepository extends Equatable {
final List<Order> orders = [];
void placeOrder(
List<Product> cartItems, String userMobileNumber) {
orders.add(Order(
userMobileNumber: userMobileNumber,
productsFromCart: cartItems));
addOrderToFirebase(cartItems, userMobileNumber);
}
不要使用getter来设置变量!
在声明了final变量后,不要将value设置为final变量

在这些行

List<Product> cartItems = CartRepository().cartItems;
print("Total from cart repository -------- ${cartRepository.totalCValue}");
orderRepository.placeOrder(cartRepository.cartItems,
cartRepository.totalCValue, event.userMobileNumber);

你正在使用getter来设置值,要解决这个问题,在CartRepository

中添加setter和现有的getter。也因为它是一个最终变量,你需要调用clear,然后调用addAll来添加新项目。

class CartRepository extends Equatable {
final List<Product> _cartItems = [];
List<Product> get cartItems => _cartItems;
set cartItems(List<Product> newCardItems){
_cartItems.clear();
_cartItems.addAll(newCardItems);
}
}

这一行将做什么?您没有使用这个变量

List<Product> cartItems = CartRepository().cartItems;

最新更新