better interval

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou 2023-03-09 11:54:17 +08:00
parent 08f9b3760f
commit 812c0c7fe1

View File

@ -45,7 +45,7 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
var _lastChangeTime = DateTime.now(); var _lastChangeTime = DateTime.now();
var _lastQueryPeers = <String>{}; var _lastQueryPeers = <String>{};
var _lastQueryTime = DateTime.now().subtract(const Duration(hours: 1)); var _lastQueryTime = DateTime.now().subtract(const Duration(hours: 1));
var _queryCoun = 0; var _queryCount = 0;
var _exit = false; var _exit = false;
late final mobileWidth = () { late final mobileWidth = () {
@ -78,12 +78,12 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
@override @override
void onWindowFocus() { void onWindowFocus() {
_queryCoun = 0; _queryCount = 0;
} }
@override @override
void onWindowMinimize() { void onWindowMinimize() {
_queryCoun = _maxQueryCount; _queryCount = _maxQueryCount;
} }
@override @override
@ -149,6 +149,7 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
// ignore: todo // ignore: todo
// TODO: variables walk through async tasks? // TODO: variables walk through async tasks?
void _startCheckOnlines() { void _startCheckOnlines() {
final queryInterval = const Duration(seconds: 20);
() async { () async {
while (!_exit) { while (!_exit) {
final now = DateTime.now(); final now = DateTime.now();
@ -158,18 +159,18 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
platformFFI.ffiBind platformFFI.ffiBind
.queryOnlines(ids: _curPeers.toList(growable: false)); .queryOnlines(ids: _curPeers.toList(growable: false));
_lastQueryPeers = {..._curPeers}; _lastQueryPeers = {..._curPeers};
_lastQueryTime = DateTime.now(); _lastQueryTime = DateTime.now().subtract(queryInterval);
_queryCoun = 0; _queryCount = 0;
} }
} }
} else { } else {
if (_queryCoun < _maxQueryCount) { if (_queryCount < _maxQueryCount) {
if (now.difference(_lastQueryTime) > const Duration(seconds: 20)) { if (now.difference(_lastQueryTime) > queryInterval) {
if (_curPeers.isNotEmpty) { if (_curPeers.isNotEmpty) {
platformFFI.ffiBind platformFFI.ffiBind
.queryOnlines(ids: _curPeers.toList(growable: false)); .queryOnlines(ids: _curPeers.toList(growable: false));
_lastQueryTime = DateTime.now(); _lastQueryTime = DateTime.now();
_queryCoun += 1; _queryCount += 1;
} }
} }
} }