import 'package:didvan/models/enums.dart'; import 'package:didvan/models/news_overview.dart'; import 'package:didvan/providers/core_provider.dart'; import 'package:didvan/services/network/request.dart'; import 'package:didvan/services/network/request_helper.dart'; class NewsState extends CoreProvier { bool isFiltering = false; String? search; String? lastSearch; String? startDate; String? endDate; final List news = []; void resetFilters() { startDate = null; endDate = null; getNews(page: 1); } Future getNews({ required int page, }) async { if (search != '' && search != null || filterApplied) { lastSearch = search; isFiltering = true; news.clear(); } else { isFiltering = false; } lastSearch = search; appState = AppState.busy; final service = RequestService( RequestHelper.newsOverviews( page: 1, startDate: startDate?.split(' ').first, endDate: endDate?.split(' ').first, search: search, ), ); await service.httpGet(); if (service.isSuccess) { final newsList = service.result['news']; for (var i = 0; i < newsList.length; i++) { news.add(NewsOverview.fromJson(newsList[i])); } appState = AppState.idle; return; } appState = AppState.failed; } Future markNews(int id) async { final service = RequestService(RequestHelper.markNews(id)); await service.post(); } bool get filterApplied => startDate != null || endDate != null; }