Metatron_Student_ERP/flutter_app/lib/providers/announcement_provider.dart

23 lines
982 B
Dart

import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../models/announcement.dart';
import '../repositories/announcement_repository.dart';
import 'auth_provider.dart';
final announcementRepositoryProvider = Provider<AnnouncementRepository>((ref) {
final apiClient = ref.watch(apiClientProvider);
return AnnouncementRepository(apiClient: apiClient);
});
final announcementTypeFilterProvider = StateProvider.autoDispose<String?>((ref) => null);
final announcementsProvider = FutureProvider.autoDispose<AnnouncementPageResult>((ref) async {
final repository = ref.watch(announcementRepositoryProvider);
final filterType = ref.watch(announcementTypeFilterProvider);
return await repository.getAnnouncements(type: filterType);
});
final announcementDetailProvider = FutureProvider.autoDispose.family<AnnouncementItem, int>((ref, id) async {
final repository = ref.watch(announcementRepositoryProvider);
return await repository.getAnnouncementDetail(id);
});