import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../core/api/api_client.dart'; import '../core/auth/auth_state.dart'; import '../core/models/page_result.dart'; import '../models/finance.dart'; import '../repositories/finance_repository.dart'; final financeRepositoryProvider = Provider((ref) { return FinanceRepository(ref.watch(apiClientProvider)); }); final financeListProvider = AsyncNotifierProvider>( FinanceListNotifier.new, ); class FinanceListNotifier extends AsyncNotifier> { int _page = 1; int _pageSize = 20; String _type = ''; String _month = ''; @override Future> build() { ref.watch(authStateProvider.select((s) => s.user?.shopId)); return _fetch(); } Future> _fetch() { return ref.read(financeRepositoryProvider).listRecords( type: _type.isEmpty ? null : _type, month: _month.isEmpty ? null : _month, page: _page, pageSize: _pageSize, ); } void setType(String type) { _type = type; _page = 1; reload(); } void setMonth(String month) { _month = month; _page = 1; reload(); } void setPage(int page) { _page = page; reload(); } void setPageSize(int pageSize) { _pageSize = pageSize; _page = 1; reload(); } void reload() { state = const AsyncValue.loading(); _fetch().then( (result) => state = AsyncValue.data(result), onError: (e, st) => state = AsyncValue.error(e, st), ); } }