import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../core/api/api_client.dart'; import '../core/auth/auth_state.dart'; import '../models/product_option.dart'; import '../providers/connectivity_provider.dart'; import '../repositories/product_option_repository.dart'; final productOptionRepositoryProvider = Provider((ref) { return ProductOptionRepository(ref.watch(apiClientProvider)); }); // ── 商品名称 ───────────────────────────────────────────────── final productNameListProvider = AsyncNotifierProvider>( ProductNameListNotifier.new, ); class ProductNameListNotifier extends AsyncNotifier> { @override Future> build() async { ref.watch(authStateProvider.select((s) => s.user?.shopId)); ref.watch(networkRecoveryCountProvider); return ref.read(productOptionRepositoryProvider).listNames(); } void reload() { state = const AsyncValue.loading(); ref.read(productOptionRepositoryProvider).listNames().then( (data) => state = AsyncValue.data(data), onError: (e, st) => state = AsyncValue.error(e, st), ); } Future create(Map data) async { await ref.read(productOptionRepositoryProvider).createName(data); reload(); } Future delete(int id) async { await ref.read(productOptionRepositoryProvider).deleteName(id); reload(); } } // ── 商品系列 ───────────────────────────────────────────────── final productSeriesListProvider = AsyncNotifierProvider>( ProductSeriesListNotifier.new, ); class ProductSeriesListNotifier extends AsyncNotifier> { @override Future> build() async { ref.watch(authStateProvider.select((s) => s.user?.shopId)); ref.watch(networkRecoveryCountProvider); return ref.read(productOptionRepositoryProvider).listSeries(); } void reload() { state = const AsyncValue.loading(); ref.read(productOptionRepositoryProvider).listSeries().then( (data) => state = AsyncValue.data(data), onError: (e, st) => state = AsyncValue.error(e, st), ); } Future create(Map data) async { await ref.read(productOptionRepositoryProvider).createSeries(data); reload(); } Future delete(int id) async { await ref.read(productOptionRepositoryProvider).deleteSeries(id); reload(); } } // ── 商品规格 ───────────────────────────────────────────────── final productSpecListProvider = AsyncNotifierProvider>( ProductSpecListNotifier.new, ); class ProductSpecListNotifier extends AsyncNotifier> { @override Future> build() async { ref.watch(authStateProvider.select((s) => s.user?.shopId)); ref.watch(networkRecoveryCountProvider); return ref.read(productOptionRepositoryProvider).listSpecs(); } void reload() { state = const AsyncValue.loading(); ref.read(productOptionRepositoryProvider).listSpecs().then( (data) => state = AsyncValue.data(data), onError: (e, st) => state = AsyncValue.error(e, st), ); } Future create(Map data) async { await ref.read(productOptionRepositoryProvider).createSpec(data); reload(); } Future delete(int id) async { await ref.read(productOptionRepositoryProvider).deleteSpec(id); reload(); } }