sync theme

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages
2022-09-07 18:57:49 +08:00
parent 17a7cbf7bb
commit b4e0101e3e
10 changed files with 84 additions and 18 deletions

View File

@@ -24,7 +24,5 @@ void main(List<String> args) async {
gFFI.serverModel.clients
.add(Client(3, false, false, "UserD", "441123123", true, false, false));
runApp(GetMaterialApp(
debugShowCheckedModeBanner: false,
theme: MyTheme.initialTheme(),
home: DesktopServerPage()));
debugShowCheckedModeBanner: false, home: DesktopServerPage()));
}

View File

@@ -193,25 +193,40 @@ class MyTheme {
);
static changeTo(bool dark) {
Get.find<SharedPreferences>().setString("darkTheme", dark ? "Y" : "");
Get.changeTheme(dark ? MyTheme.darkTheme : MyTheme.lightTheme);
Get.forceAppUpdate();
if (Get.isDarkMode != dark) {
Get.find<SharedPreferences>().setString("darkTheme", dark ? "Y" : "");
Get.changeThemeMode(dark ? ThemeMode.dark : ThemeMode.light);
if (desktopType == DesktopType.main) {
bind.mainChangeTheme(dark: dark);
}
}
}
static bool _themeInitialed = false;
static ThemeData initialTheme({bool mainPage = false}) {
static ThemeMode initialThemeMode({bool mainPage = false}) {
bool dark;
// Brightnesss is always light on windows, Flutter 3.0.5
if (_themeInitialed || !mainPage || Platform.isWindows) {
dark = isDarkTheme();
dark = "Y" == Get.find<SharedPreferences>().getString("darkTheme");
} else {
dark = WidgetsBinding.instance.platformDispatcher.platformBrightness ==
Brightness.dark;
Get.find<SharedPreferences>().setString("darkTheme", dark ? "Y" : "");
}
_themeInitialed = true;
return dark ? MyTheme.darkTheme : MyTheme.lightTheme;
return dark ? ThemeMode.dark : ThemeMode.light;
}
static registerEventHandler() {
if (desktopType != DesktopType.main) {
platformFFI.registerEventHandler('theme', 'theme-$desktopType', (evt) {
String? dark = evt['dark'];
if (dark != null) {
changeTo(dark == 'true');
}
});
}
}
static ColorThemeExtension color(BuildContext context) {
@@ -232,8 +247,7 @@ class ThemeModeNotifier {
}
bool isDarkTheme() {
final isDark = "Y" == Get.find<SharedPreferences>().getString("darkTheme");
return isDark;
return Get.isDarkMode;
}
final ButtonStyle flatButtonStyle = TextButton.styleFrom(

View File

@@ -5,6 +5,8 @@ const String kAppTypeMain = "main";
const String kAppTypeDesktopRemote = "remote";
const String kAppTypeDesktopFileTransfer = "file transfer";
const String kAppTypeDesktopPortForward = "port forward";
const String kAppTypeDesktopRDP = "rdp";
const String kTabLabelHomePage = "Home";
const String kTabLabelSettingPage = "Settings";

View File

@@ -79,6 +79,7 @@ Future<void> initEnv(String appType) async {
await initGlobalFFI();
// await Firebase.initializeApp();
refreshCurrentUser();
MyTheme.registerEventHandler();
}
void runMainApp(bool startService) async {
@@ -113,7 +114,9 @@ void runRemoteScreen(Map<String, dynamic> argument) async {
navigatorKey: globalKey,
debugShowCheckedModeBanner: false,
title: 'RustDesk - Remote Desktop',
theme: MyTheme.initialTheme(),
theme: MyTheme.lightTheme,
darkTheme: MyTheme.darkTheme,
themeMode: MyTheme.initialThemeMode(),
home: DesktopRemoteScreen(
params: argument,
),
@@ -131,7 +134,9 @@ void runFileTransferScreen(Map<String, dynamic> argument) async {
navigatorKey: globalKey,
debugShowCheckedModeBanner: false,
title: 'RustDesk - File Transfer',
theme: MyTheme.initialTheme(),
theme: MyTheme.lightTheme,
darkTheme: MyTheme.darkTheme,
themeMode: MyTheme.initialThemeMode(),
home: DesktopFileTransferScreen(params: argument),
navigatorObservers: [
// FirebaseAnalyticsObserver(analytics: analytics),
@@ -148,7 +153,9 @@ void runPortForwardScreen(Map<String, dynamic> argument) async {
navigatorKey: globalKey,
debugShowCheckedModeBanner: false,
title: 'RustDesk - Port Forward',
theme: MyTheme.initialTheme(),
theme: MyTheme.lightTheme,
darkTheme: MyTheme.darkTheme,
themeMode: MyTheme.initialThemeMode(),
home: DesktopPortForwardScreen(params: argument),
navigatorObservers: [
// FirebaseAnalyticsObserver(analytics: analytics),
@@ -172,7 +179,9 @@ void runConnectionManagerScreen() async {
]);
runApp(GetMaterialApp(
debugShowCheckedModeBanner: false,
theme: MyTheme.initialTheme(),
theme: MyTheme.lightTheme,
darkTheme: MyTheme.darkTheme,
themeMode: MyTheme.initialThemeMode(),
home: DesktopServerPage(),
builder: _keepScaleBuilder()));
}
@@ -225,7 +234,9 @@ class _AppState extends State<App> {
navigatorKey: globalKey,
debugShowCheckedModeBanner: false,
title: 'RustDesk',
theme: MyTheme.initialTheme(mainPage: true),
theme: MyTheme.lightTheme,
darkTheme: MyTheme.darkTheme,
themeMode: MyTheme.initialThemeMode(mainPage: true),
home: isDesktop
? const DesktopTabPage()
: !isAndroid