fix status bar height && status only update after mouse hover

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages 2022-10-19 20:53:05 +08:00
parent 32ad458b25
commit 4a2307de2f

View File

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