This commit is contained in:
MohammadTaha Basiri 2022-02-02 15:56:39 +03:30
parent 8384e0b0f3
commit 3b3cdd20d0
2 changed files with 43 additions and 1 deletions

View File

@ -1,3 +1,4 @@
import 'dart:async';
import 'dart:math'; import 'dart:math';
import 'package:didvan/models/enums.dart'; import 'package:didvan/models/enums.dart';
@ -11,6 +12,8 @@ class NewsDetailsState extends CoreProvier {
final List<NewsDetailsData?> news = []; final List<NewsDetailsData?> news = [];
late final int initialIndex; late final int initialIndex;
late final NewsRequestArgs args; late final NewsRequestArgs args;
late Timer _trackingTimer;
int _trackingTimerCounter = 0;
int _currentIndex = 0; int _currentIndex = 0;
int get currentIndex => _currentIndex; int get currentIndex => _currentIndex;
@ -23,6 +26,7 @@ class NewsDetailsState extends CoreProvier {
} }
final service = RequestService(RequestHelper.newsDetails(id, args)); final service = RequestService(RequestHelper.newsDetails(id, args));
await service.httpGet(); await service.httpGet();
_handleTracking(sendRequest: isForward != null);
if (service.isSuccess) { if (service.isSuccess) {
final result = service.result; final result = service.result;
NewsDetailsData? prevNews; NewsDetailsData? prevNews;
@ -70,4 +74,21 @@ class NewsDetailsState extends CoreProvier {
news.firstWhere((item) => item!.id == currentNews.id)!.comments = count; news.firstWhere((item) => item!.id == currentNews.id)!.comments = count;
notifyListeners(); notifyListeners();
} }
Future<void> _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();
}
} }

View File

@ -1,3 +1,4 @@
import 'dart:async';
import 'dart:math'; import 'dart:math';
import 'package:didvan/models/enums.dart'; import 'package:didvan/models/enums.dart';
@ -9,6 +10,8 @@ import 'package:didvan/services/network/request_helper.dart';
class RadarDetailsState extends CoreProvier { class RadarDetailsState extends CoreProvier {
final List<RadarDetailsData?> radars = []; final List<RadarDetailsData?> radars = [];
late Timer _trackingTimer;
int _trackingTimerCounter = 0;
late final int initialIndex; late final int initialIndex;
late final RadarRequestArgs args; late final RadarRequestArgs args;
@ -29,6 +32,7 @@ class RadarDetailsState extends CoreProvier {
} }
final service = RequestService(RequestHelper.radarDetails(id, args)); final service = RequestService(RequestHelper.radarDetails(id, args));
await service.httpGet(); await service.httpGet();
_handleTracking(sendRequest: isForward != null);
if (service.isSuccess) { if (service.isSuccess) {
final result = service.result; final result = service.result;
RadarDetailsData? prevRadar; RadarDetailsData? prevRadar;
@ -73,7 +77,7 @@ class RadarDetailsState extends CoreProvier {
appState = AppState.idle; appState = AppState.idle;
return; return;
} }
//why? total page state shouldn't die!
if (isForward == null) { if (isForward == null) {
appState = AppState.failed; appState = AppState.failed;
} }
@ -87,4 +91,21 @@ class RadarDetailsState extends CoreProvier {
count; count;
notifyListeners(); notifyListeners();
} }
Future<void> _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();
}
} }