not accept dialog show when desktop page dispose

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages 2023-06-08 16:18:21 +08:00
parent 150be1133a
commit 52733654c3
4 changed files with 9 additions and 4 deletions

View File

@ -600,12 +600,16 @@ class OverlayDialogManager {
int _tagCount = 0;
OverlayEntry? _mobileActionsOverlayEntry;
bool _stop = false;
void setOverlayState(OverlayKeyState overlayKeyState) {
_overlayKeyState = overlayKeyState;
}
void dismissAll() {
void dismissAll({bool? stop}) {
if (stop != null) {
_stop = stop;
}
_dialogs.forEach((key, value) {
value.complete(null);
BackButtonInterceptor.removeByName(key);
@ -625,6 +629,7 @@ class OverlayDialogManager {
String? tag,
bool useAnimation = true,
bool forceGlobal = false}) {
if (_stop) return Future(() => null);
final overlayState =
forceGlobal ? globalKey.currentState?.overlay : _overlayKeyState.state;

View File

@ -97,7 +97,7 @@ class _FileManagerPageState extends State<FileManagerPage>
void dispose() {
model.close().whenComplete(() {
_ffi.close();
_ffi.dialogManager.dismissAll();
_ffi.dialogManager.dismissAll(stop: true);
if (!Platform.isLinux) {
Wakelock.disable();
}

View File

@ -70,7 +70,7 @@ class _PortForwardPageState extends State<PortForwardPage>
@override
void dispose() {
_ffi.close();
_ffi.dialogManager.dismissAll();
_ffi.dialogManager.dismissAll(stop: true);
if (!Platform.isLinux) {
Wakelock.disable();
}

View File

@ -220,7 +220,7 @@ class _RemotePageState extends State<RemotePage>
_rawKeyFocusNode.dispose();
_ffi.close();
_timer?.cancel();
_ffi.dialogManager.dismissAll();
_ffi.dialogManager.dismissAll(stop: true);
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual,
overlays: SystemUiOverlay.values);
if (!Platform.isLinux) {