import 'package:didvan/constants/assets.dart'; import 'package:didvan/models/category.dart'; import 'package:didvan/models/enums.dart'; import 'package:didvan/models/overview_data.dart'; import 'package:didvan/models/requests/radar.dart'; import 'package:didvan/providers/core.dart'; import 'package:didvan/services/network/request.dart'; import 'package:didvan/services/network/request_helper.dart'; class StatisticsState extends CoreProvier { int page = 1; int lastPage = 1; bool isScrolled = false; bool shouldColapse = false; final List selectedCats = []; List categories = []; final List statistics = []; bool get isColapsed => (isCategorySelected && isScrolled) || isScrolled; bool get isCategorySelected => selectedCats.length == 1; void resetFilters(bool isInit) { selectedCats.clear(); isScrolled = false; if (!isInit) { getStatistics(page: 1); } } Future getStatistics({ required int page, }) async { this.page = page; if (this.page == page) { statistics.clear(); } if (page == 1) { appState = AppState.busy; } final RequestService service = RequestService( RequestHelper.radarOverviews( args: RadarRequestArgs( page: page, categories: selectedCats.map((e) => e.id).toList(), ), ), ); await service.httpGet(); if (service.isSuccess) { lastPage = service.result['lastPage']; final radarsList = service.result['radars']; for (var i = 0; i < radarsList.length; i++) { statistics.add(OverviewData.fromJson(radarsList[i])); } if (isColapsed || isCategorySelected) { shouldColapse = true; } appState = AppState.idle; return; } appState = AppState.failed; } Future changeMark(int id, bool value, bool shouldUpdate) async { statistics.firstWhere((element) => element.id == id).marked = value; if (shouldUpdate) { notifyListeners(); } } void init() { resetFilters(true); Future.delayed(Duration.zero, () { getStatistics(page: 1); }); categories = [ CategoryData( id: 1, label: 'اقتصاد کلان', asset: Assets.economicCategoryIcon, ), CategoryData( id: 2, label: 'صنعت فولاد', asset: Assets.politicalCategoryIcon, ), CategoryData( id: 3, label: 'بازار سرمایه', asset: Assets.techCategoryIcon, ), ]; } }