diff --git a/lib/pages/home/news/news_details/news_details_state.dart b/lib/pages/home/news/news_details/news_details_state.dart index 27b8ad3..816287d 100644 --- a/lib/pages/home/news/news_details/news_details_state.dart +++ b/lib/pages/home/news/news_details/news_details_state.dart @@ -1,3 +1,4 @@ +import 'dart:async'; import 'dart:math'; import 'package:didvan/models/enums.dart'; @@ -11,6 +12,8 @@ class NewsDetailsState extends CoreProvier { final List news = []; late final int initialIndex; late final NewsRequestArgs args; + late Timer _trackingTimer; + int _trackingTimerCounter = 0; int _currentIndex = 0; int get currentIndex => _currentIndex; @@ -23,6 +26,7 @@ class NewsDetailsState extends CoreProvier { } final service = RequestService(RequestHelper.newsDetails(id, args)); await service.httpGet(); + _handleTracking(sendRequest: isForward != null); if (service.isSuccess) { final result = service.result; NewsDetailsData? prevNews; @@ -70,4 +74,21 @@ class NewsDetailsState extends CoreProvier { news.firstWhere((item) => item!.id == currentNews.id)!.comments = count; notifyListeners(); } + + Future _handleTracking({bool sendRequest = true}) async { + if (!sendRequest) { + _trackingTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + _trackingTimerCounter++; + }); + return; + } + //send request + _trackingTimerCounter = 0; + } + + @override + void dispose() { + _trackingTimer.cancel(); + super.dispose(); + } } diff --git a/lib/pages/home/radar/radar_details/radar_details_state.dart b/lib/pages/home/radar/radar_details/radar_details_state.dart index f426a89..10860ff 100644 --- a/lib/pages/home/radar/radar_details/radar_details_state.dart +++ b/lib/pages/home/radar/radar_details/radar_details_state.dart @@ -1,3 +1,4 @@ +import 'dart:async'; import 'dart:math'; import 'package:didvan/models/enums.dart'; @@ -9,6 +10,8 @@ import 'package:didvan/services/network/request_helper.dart'; class RadarDetailsState extends CoreProvier { final List radars = []; + late Timer _trackingTimer; + int _trackingTimerCounter = 0; late final int initialIndex; late final RadarRequestArgs args; @@ -29,6 +32,7 @@ class RadarDetailsState extends CoreProvier { } final service = RequestService(RequestHelper.radarDetails(id, args)); await service.httpGet(); + _handleTracking(sendRequest: isForward != null); if (service.isSuccess) { final result = service.result; RadarDetailsData? prevRadar; @@ -73,7 +77,7 @@ class RadarDetailsState extends CoreProvier { appState = AppState.idle; return; } - + //why? total page state shouldn't die! if (isForward == null) { appState = AppState.failed; } @@ -87,4 +91,21 @@ class RadarDetailsState extends CoreProvier { count; notifyListeners(); } + + Future _handleTracking({bool sendRequest = true}) async { + if (!sendRequest) { + _trackingTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + _trackingTimerCounter++; + }); + return; + } + //send request + _trackingTimerCounter = 0; + } + + @override + void dispose() { + _trackingTimer.cancel(); + super.dispose(); + } }