forceUpdate when unminisized on windows

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages 2022-10-22 21:55:36 +08:00
parent 41893e2ac2
commit d48a94e530

View File

@ -2,6 +2,7 @@
import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_hbb/common/widgets/address_book.dart';
@ -9,6 +10,7 @@ import 'package:flutter_hbb/consts.dart';
import 'package:flutter_hbb/desktop/widgets/scroll_wrapper.dart';
import 'package:get/get.dart';
import 'package:url_launcher/url_launcher_string.dart';
import 'package:window_manager/window_manager.dart';
import '../../common.dart';
import '../../common/formatter/id_formatter.dart';
@ -27,7 +29,7 @@ class ConnectionPage extends StatefulWidget {
/// State for the connection page.
class _ConnectionPageState extends State<ConnectionPage>
with SingleTickerProviderStateMixin {
with SingleTickerProviderStateMixin, WindowListener {
/// Controller for the id input bar.
final _idController = IDTextEditingController();
@ -43,6 +45,8 @@ class _ConnectionPageState extends State<ConnectionPage>
var svcStatusCode = 0.obs;
var svcIsUsingPublicServer = true.obs;
bool isWindowMinisized = false;
@override
void initState() {
super.initState();
@ -63,6 +67,7 @@ class _ConnectionPageState extends State<ConnectionPage>
_idInputFocused.value = _idFocusNode.hasFocus;
});
Get.put<RxBool>(svcStopped, tag: 'service-stop');
windowManager.addListener(this);
}
@override
@ -70,9 +75,24 @@ class _ConnectionPageState extends State<ConnectionPage>
_idController.dispose();
_updateTimer?.cancel();
Get.delete<RxBool>(tag: 'service-stop');
windowManager.removeListener(this);
super.dispose();
}
@override
void onWindowEvent(String eventName) {
super.onWindowEvent(eventName);
if (eventName == 'minimize') {
isWindowMinisized = true;
} else if (eventName == 'maximize' || eventName == 'restore') {
if (isWindowMinisized && Platform.isWindows) {
// windows can't update when minisized.
Get.forceAppUpdate();
}
isWindowMinisized = false;
}
}
@override
Widget build(BuildContext context) {
return Column(