diff --git a/flutter/lib/desktop/pages/connection_page.dart b/flutter/lib/desktop/pages/connection_page.dart index 318843699..f2b5cd9f4 100644 --- a/flutter/lib/desktop/pages/connection_page.dart +++ b/flutter/lib/desktop/pages/connection_page.dart @@ -55,6 +55,9 @@ class _ConnectionPageState extends State<ConnectionPage> _updateTimer = Timer.periodic(Duration(seconds: 1), (timer) { updateStatus(); }); + _idFocusNode.addListener(() { + _idInputFocused.value = _idFocusNode.hasFocus; + }); } @override @@ -107,9 +110,8 @@ class _ConnectionPageState extends State<ConnectionPage> ).paddingOnly(left: 12.0), ), ), - const Divider(), - SizedBox(child: Obx(() => buildStatus())) - .paddingOnly(bottom: 12, top: 6), + const Divider(height: 1), + buildStatus() ], ); } @@ -124,9 +126,6 @@ class _ConnectionPageState extends State<ConnectionPage> /// UI for the remote ID TextField. /// Search for a peer and connect to it if the id exists. Widget _buildRemoteIDTextField(BuildContext context) { - _idFocusNode.addListener(() { - _idInputFocused.value = _idFocusNode.hasFocus; - }); var w = Container( width: 320 + 20 * 2, padding: const EdgeInsets.fromLTRB(20, 24, 20, 22), @@ -235,79 +234,73 @@ class _ConnectionPageState extends State<ConnectionPage> var svcIsUsingPublicServer = true.obs; Widget buildStatus() { - final fontSize = 14.0; - final textStyle = TextStyle(fontSize: fontSize); - final light = Container( - height: 8, - width: 8, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(20), - color: svcStopped.value || svcStatusCode.value == 0 - ? kColorWarn - : (svcStatusCode.value == 1 - ? Color.fromARGB(255, 50, 190, 166) - : Color.fromARGB(255, 224, 79, 95)), - ), - ).paddingSymmetric(horizontal: 12.0); - if (svcStopped.value) { - return Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - light, - Text(translate("Service is not running"), style: textStyle), - TextButton( - onPressed: () async { - bool checked = await bind.mainCheckSuperUserPermission(); - if (checked) { - bind.mainSetOption(key: "stop-service", value: ""); - bind.mainSetOption(key: "access-mode", value: ""); - } - }, - child: Text(translate("Start Service"), style: textStyle)) - ], - ); - } else { - if (svcStatusCode.value == 0) { - return Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - light, - Text(translate("connecting_status"), style: textStyle) - ], - ); - } else if (svcStatusCode.value == -1) { - return Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - light, - Text(translate("not_ready_status"), style: textStyle) - ], - ); - } - } - return Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - light, - Text(translate('Ready'), style: textStyle), - Offstage( - offstage: !svcIsUsingPublicServer.value, - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text(', ', style: textStyle), - InkWell( - onTap: onUsePublicServerGuide, - child: Text( - translate('setup_server_tip'), - style: TextStyle( - decoration: TextDecoration.underline, - fontSize: fontSize), - ), - ) - ], - )) - ], + final em = 14.0; + return ConstrainedBox( + constraints: BoxConstraints.tightFor(height: 3 * em), + child: Obx(() => Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + height: 8, + width: 8, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(4), + color: svcStopped.value || svcStatusCode.value == 0 + ? kColorWarn + : (svcStatusCode.value == 1 + ? Color.fromARGB(255, 50, 190, 166) + : Color.fromARGB(255, 224, 79, 95)), + ), + ).marginSymmetric(horizontal: em), + Text( + svcStopped.value + ? translate("Service is not running") + : svcStatusCode.value == 0 + ? translate("connecting_status") + : svcStatusCode.value == -1 + ? translate("not_ready_status") + : translate('Ready'), + style: TextStyle(fontSize: em)), + // stop + Offstage( + offstage: !svcStopped.value, + child: GestureDetector( + onTap: () async { + bool checked = + await bind.mainCheckSuperUserPermission(); + if (checked) { + bind.mainSetOption(key: "stop-service", value: ""); + bind.mainSetOption(key: "access-mode", value: ""); + } + }, + child: Text(translate("Start Service"), + style: TextStyle( + decoration: TextDecoration.underline, + fontSize: em))) + .marginOnly(left: em), + ), + // ready && public + Offstage( + offstage: !(!svcStopped.value && + svcStatusCode.value == 1 && + svcIsUsingPublicServer.value), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text(', ', style: TextStyle(fontSize: em)), + InkWell( + onTap: onUsePublicServerGuide, + child: Text( + translate('setup_server_tip'), + style: TextStyle( + decoration: TextDecoration.underline, fontSize: em), + ), + ) + ], + ), + ) + ], + )), ); }