import 'package:didvan/models/enums.dart'; import 'package:didvan/models/news_overview.dart'; import 'package:didvan/models/requests/news.dart'; import 'package:didvan/providers/core_provider.dart'; import 'package:didvan/providers/user_provider.dart'; import 'package:didvan/services/network/request.dart'; import 'package:didvan/services/network/request_helper.dart'; class NewsState extends CoreProvier { String search = ''; String lastSearch = ''; String? startDate; String? endDate; int page = 1; final List news = []; void init() { search = ''; lastSearch = ''; startDate = null; endDate = null; Future.delayed(Duration.zero, () { getNews(page: 1); }); } void resetFilters() { startDate = null; endDate = null; getNews(page: 1); } Future getNews({ required int page, }) async { if (this.page == page) { news.clear(); } this.page = page; if (search != '') { lastSearch = search; } lastSearch = search; appState = AppState.busy; final service = RequestService( RequestHelper.newsOverviews( args: NewsRequestArgs( page: 1, startDate: startDate?.split(' ').first, endDate: endDate?.split(' ').first, search: search == '' ? null : search, ), ), ); await service.httpGet(); if (service.isSuccess) { final newsList = service.result['news']; for (var i = 0; i < newsList.length; i++) { news.add(NewsOverviewData.fromJson(newsList[i])); } appState = AppState.idle; return; } appState = AppState.failed; } Future onMarkChanged(int id, bool value) async { news.firstWhere((element) => element.id == id).marked = value; notifyListeners(); UserProvider.changeNewsMark(id, value); } bool get isFiltering => startDate != null || endDate != null; }