announcement_api.dart 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import 'package:flutter_riverpod/flutter_riverpod.dart';
  2. import '../../core/network/api_client.dart';
  3. import '../../app.dart';
  4. import '../../shared/models/pagination_model.dart';
  5. import 'announcement_model.dart';
  6. final announcementApiProvider = Provider<AnnouncementApi>(
  7. (ref) => AnnouncementApi(ref.read(apiClientProvider)));
  8. class AnnouncementApi {
  9. final ApiClient _client;
  10. AnnouncementApi(this._client);
  11. Future<PaginatedData<AnnouncementModel>> fetchList({
  12. int page = 1,
  13. int size = 20,
  14. }) async {
  15. final response = await _client.get<Map<String, dynamic>>(
  16. '/announcement/list',
  17. queryParameters: {'page': page, 'size': size},
  18. );
  19. final data = response.data!;
  20. final list = (data['list'] as List<dynamic>)
  21. .map((e) => AnnouncementModel.fromJson(e as Map<String, dynamic>))
  22. .toList();
  23. return PaginatedData(
  24. list: list,
  25. page: data['page'] as int,
  26. size: data['size'] as int,
  27. total: data['total'] as int,
  28. );
  29. }
  30. Future<AnnouncementModel> fetchDetail(String id) async {
  31. final response = await _client.get<Map<String, dynamic>>(
  32. '/announcement/detail/$id',
  33. );
  34. return AnnouncementModel.fromJson(response.data!);
  35. }
  36. }