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; int lastPage = 0; 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 { this.page = page; if (this.page == 1) { news.clear(); } if (search != '') { lastSearch = search; } lastSearch = search; if (page == 1) { appState = AppState.busy; } final service = RequestService( RequestHelper.newsOverviews( args: NewsRequestArgs( page: page, startDate: startDate?.split(' ').first, endDate: endDate?.split(' ').first, search: search == '' ? null : search, ), ), ); await service.httpGet(); if (service.isSuccess) { lastPage = service.result['lastPage']; 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; }