mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-04-02 17:21:28 +03:00
feat: replace forceAppUpdate with customed reloadWindow
This commit is contained in:
@@ -5,6 +5,7 @@ import 'dart:convert';
|
||||
import 'package:flutter/material.dart' hide MenuItem;
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_hbb/common.dart';
|
||||
import 'package:flutter_hbb/consts.dart';
|
||||
import 'package:flutter_hbb/desktop/pages/connection_page.dart';
|
||||
import 'package:flutter_hbb/desktop/pages/desktop_setting_page.dart';
|
||||
import 'package:flutter_hbb/desktop/pages/desktop_tab_page.dart';
|
||||
@@ -452,6 +453,8 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
||||
'scaleFactor': screen.scaleFactor,
|
||||
});
|
||||
}
|
||||
} else if (call.method == kWindowActionRebuild) {
|
||||
reloadCurrentWindow();
|
||||
}
|
||||
});
|
||||
Future.delayed(Duration.zero, () {
|
||||
|
||||
@@ -406,7 +406,7 @@ class _GeneralState extends State<_General> {
|
||||
initialKey: currentKey,
|
||||
onChanged: (key) async {
|
||||
await bind.mainSetLocalOption(key: "lang", value: key);
|
||||
Get.forceAppUpdate();
|
||||
reloadAllWindows();
|
||||
bind.mainChangeLanguage(lang: key);
|
||||
},
|
||||
).marginOnly(left: _kContentHMargin);
|
||||
|
||||
@@ -47,7 +47,7 @@ class _FileManagerTabPageState extends State<FileManagerTabPage> {
|
||||
|
||||
rustDeskWinManager.setMethodHandler((call, fromWindowId) async {
|
||||
print(
|
||||
"call ${call.method} with args ${call.arguments} from window ${fromWindowId} to ${windowId()}");
|
||||
"[FileTransfer] call ${call.method} with args ${call.arguments} from window ${fromWindowId} to ${windowId()}");
|
||||
// for simplify, just replace connectionId
|
||||
if (call.method == "new_file_transfer") {
|
||||
final args = jsonDecode(call.arguments);
|
||||
@@ -62,6 +62,8 @@ class _FileManagerTabPageState extends State<FileManagerTabPage> {
|
||||
page: FileManagerPage(key: ValueKey(id), id: id)));
|
||||
} else if (call.method == "onDestroy") {
|
||||
tabController.clear();
|
||||
} else if (call.method == kWindowActionRebuild) {
|
||||
reloadCurrentWindow();
|
||||
}
|
||||
});
|
||||
Future.delayed(Duration.zero, () {
|
||||
|
||||
@@ -70,6 +70,8 @@ class _PortForwardTabPageState extends State<PortForwardTabPage> {
|
||||
page: PortForwardPage(id: id, isRDP: isRDP)));
|
||||
} else if (call.method == "onDestroy") {
|
||||
tabController.clear();
|
||||
} else if (call.method == kWindowActionRebuild) {
|
||||
reloadCurrentWindow();
|
||||
}
|
||||
});
|
||||
Future.delayed(Duration.zero, () {
|
||||
|
||||
@@ -89,6 +89,8 @@ class _ConnectionTabPageState extends State<ConnectionTabPage> {
|
||||
))));
|
||||
} else if (call.method == "onDestroy") {
|
||||
tabController.clear();
|
||||
} else if (call.method == kWindowActionRebuild) {
|
||||
reloadCurrentWindow();
|
||||
}
|
||||
_update_remote_count();
|
||||
});
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hbb/common.dart';
|
||||
import 'package:flutter_hbb/desktop/pages/file_manager_tab_page.dart';
|
||||
import 'package:flutter_hbb/desktop/widgets/refresh_wrapper.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
/// multi-tab file transfer remote screen
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hbb/common.dart';
|
||||
import 'package:flutter_hbb/desktop/pages/port_forward_tab_page.dart';
|
||||
import 'package:flutter_hbb/desktop/widgets/refresh_wrapper.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
/// multi-tab file port forward screen
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hbb/common.dart';
|
||||
import 'package:flutter_hbb/desktop/pages/remote_tab_page.dart';
|
||||
import 'package:flutter_hbb/desktop/widgets/refresh_wrapper.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
|
||||
41
flutter/lib/desktop/widgets/refresh_wrapper.dart
Normal file
41
flutter/lib/desktop/widgets/refresh_wrapper.dart
Normal file
@@ -0,0 +1,41 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hbb/main.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class RefreshWrapper extends StatefulWidget {
|
||||
final Widget Function(BuildContext context) builder;
|
||||
const RefreshWrapper({super.key, required this.builder});
|
||||
|
||||
@override
|
||||
State<RefreshWrapper> createState() => RefreshWrapperState();
|
||||
|
||||
static RefreshWrapperState? of(BuildContext context) {
|
||||
final state = context.findAncestorStateOfType<RefreshWrapperState>();
|
||||
if (state == null) {
|
||||
debugPrint(
|
||||
"RefreshWrapperState not exists in this context, perhaps RefreshWrapper is not exists?");
|
||||
}
|
||||
return state;
|
||||
}
|
||||
}
|
||||
|
||||
class RefreshWrapperState extends State<RefreshWrapper> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return widget.builder(context);
|
||||
}
|
||||
|
||||
rebuild() {
|
||||
debugPrint("=====Global State Rebuild (win-${windowId ?? 'main'})=====");
|
||||
if (Get.context != null) {
|
||||
(context as Element).visitChildren(_rebuildElement);
|
||||
}
|
||||
setState(() {});
|
||||
}
|
||||
|
||||
/// set root tree dirty to trigger global rebuild
|
||||
void _rebuildElement(Element el) {
|
||||
el.markNeedsBuild();
|
||||
el.visitChildren(_rebuildElement);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user