import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:wordpress/providers/api_const.dart'; import 'package:wordpress/providers/api_repositoryprovider.dart'; import 'package:wordpress/viewmodel/all_product_model.dart'; import 'package:wordpress/viewmodel/cart_model.dart'; import 'package:wordpress/viewmodel/detail_model.dart'; import 'package:wordpress/viewmodel/product_home_page_model.dart'; final apiRepositoryProvider = Provider((ref) => ApiRepository()); final productHomePageProvider = FutureProvider.autoDispose((ref) async { final repo = ref.read(apiRepositoryProvider); return repo.fetchHomePage(ConstsApi.home); }); final allProductProvider = FutureProvider.autoDispose>(( ref, ) async { final repo = ref.read(apiRepositoryProvider); return repo.fetchAllProducts(ConstsApi.allproduct); }); final cartProvider = FutureProvider.autoDispose((ref) async { final repo = ref.read(apiRepositoryProvider); return repo.fetchCart(ConstsApi.cart); }); final productDetailProvider = FutureProvider.autoDispose .family((ref, id) async { final repo = ref.read(apiRepositoryProvider); return repo.fetchProductDetail(id); }); final cartHelperProvider = Provider((ref) => WooCartHelper()); final cartIdProvider = StateProvider((ref) => null); final cartItemsProvider = FutureProvider>((ref) async { final cartId = ref.watch(cartIdProvider); if (cartId == null) return []; final cartHelper = ref.read(cartHelperProvider); return await cartHelper.getCartItems(); }); final cartItemCountProvider = Provider((ref) { final cartItems = ref.watch(cartItemsProvider); return cartItems.when( data: (items) => items.fold(0, (sum, item) => sum + item.quantity), loading: () => 0, error: (_, __) => 0, ); });