diff --git a/flutter/lib/desktop/pages/connection_page.dart b/flutter/lib/desktop/pages/connection_page.dart index f37bb8d9f..2ce80232d 100644 --- a/flutter/lib/desktop/pages/connection_page.dart +++ b/flutter/lib/desktop/pages/connection_page.dart @@ -1,5 +1,6 @@ // main window right pane +import 'dart:async'; import 'dart:io'; import 'package:auto_size_text/auto_size_text.dart'; @@ -34,6 +35,8 @@ class _ConnectionPageState extends State /// Nested scroll controller final _scrollController = ScrollController(); + Timer? _svcStatusTimer; + final RxBool _idInputFocused = false.obs; final FocusNode _idFocusNode = FocusNode(); @@ -54,7 +57,9 @@ class _ConnectionPageState extends State } }(); } - stateGlobal.startSvcStatusTimer(); + _svcStatusTimer = periodic_immediate(Duration(seconds: 1), () async { + stateGlobal.updateSvcStatus(); + }); _idFocusNode.addListener(() { _idInputFocused.value = _idFocusNode.hasFocus; // select all to faciliate removing text, just following the behavior of address input of chrome @@ -67,7 +72,8 @@ class _ConnectionPageState extends State @override void dispose() { _idController.dispose(); - stateGlobal.cancelSvcStatusTimer(); + _svcStatusTimer?.cancel(); + _svcStatusTimer = null; windowManager.removeListener(this); super.dispose(); } diff --git a/flutter/lib/models/state_model.dart b/flutter/lib/models/state_model.dart index 842404ac2..d73ddb643 100644 --- a/flutter/lib/models/state_model.dart +++ b/flutter/lib/models/state_model.dart @@ -10,7 +10,6 @@ import '../consts.dart'; import '../common.dart'; import './platform_model.dart'; -import './user_model.dart'; enum SvcStatus { notReady, connecting, ready } @@ -27,7 +26,6 @@ class StateGlobal { final svcStatus = SvcStatus.notReady.obs; final svcIsUsingPublicServer = true.obs; - Timer? _svcStatusTimer; // Use for desktop -> remote toolbar -> resolution final Map> _lastResolutionGroupValues = {}; @@ -93,17 +91,6 @@ class StateGlobal { } } - startSvcStatusTimer() { - _svcStatusTimer = periodic_immediate(Duration(seconds: 1), () async { - updateSvcStatus(); - }); - } - - cancelSvcStatusTimer() { - _svcStatusTimer?.cancel(); - _svcStatusTimer = null; - } - updateSvcStatus() async { final status = jsonDecode(await bind.mainGetConnectStatus()) as Map;