From 9e3afe98a9a1807d48afb544803f1623a2298045 Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Tue, 21 Mar 2023 15:36:35 +0800 Subject: [PATCH] fix: `ThemeMode` not works under copied data --- ios/Runner.xcodeproj/project.pbxproj | 12 +++++------ lib/app.dart | 30 ++++++++++++++++++++-------- lib/data/provider/server.dart | 2 -- lib/data/res/build_data.dart | 6 +++--- lib/main.dart | 27 ++++++++++++------------- lib/view/page/home.dart | 1 + 6 files changed, 45 insertions(+), 33 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 6b4283ae..b4133801 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -359,7 +359,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 241; + CURRENT_PROJECT_VERSION = 243; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -367,7 +367,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.241; + MARKETING_VERSION = 1.0.243; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -490,7 +490,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 241; + CURRENT_PROJECT_VERSION = 243; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -498,7 +498,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.241; + MARKETING_VERSION = 1.0.243; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -515,7 +515,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 241; + CURRENT_PROJECT_VERSION = 243; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -523,7 +523,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.241; + MARKETING_VERSION = 1.0.243; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; diff --git a/lib/app.dart b/lib/app.dart index 8a22b67c..6c54d220 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -41,6 +41,8 @@ class MyApp extends StatelessWidget { final radioTheme = RadioThemeData( fillColor: materialColor, ); + final primarySwatch = primaryColor.materialColor; + return ValueListenableBuilder( valueListenable: _setting.themeMode.listenable(), builder: (_, tMode, __) { @@ -51,7 +53,7 @@ class MyApp extends StatelessWidget { useMaterial3: false, fontFamily: fontName, primaryColor: primaryColor, - primarySwatch: primaryColor.materialColor, + primarySwatch: primarySwatch, appBarTheme: appBarTheme, floatingActionButtonTheme: fabTheme, iconTheme: iconTheme, @@ -60,6 +62,24 @@ class MyApp extends StatelessWidget { inputDecorationTheme: inputDecorationTheme, radioTheme: radioTheme, ); + final darkTheme = ThemeData( + useMaterial3: false, + fontFamily: fontName, + primaryColor: primaryColor, + primarySwatch: primarySwatch, + floatingActionButtonTheme: fabTheme, + iconTheme: iconTheme, + primaryIconTheme: iconTheme, + switchTheme: switchTheme, + inputDecorationTheme: inputDecorationTheme, + radioTheme: radioTheme, + brightness: Brightness.dark, + colorScheme: ColorScheme.fromSwatch( + primarySwatch: primaryColor.materialColor, + brightness: Brightness.dark, + accentColor: primaryColor, + ), + ); return MaterialApp( debugShowCheckedModeBanner: false, @@ -68,13 +88,7 @@ class MyApp extends StatelessWidget { title: BuildData.name, themeMode: themeMode, theme: theme, - darkTheme: theme.copyWith( - colorScheme: ColorScheme.fromSwatch( - primarySwatch: primaryColor.materialColor, - brightness: Brightness.dark, - accentColor: primaryColor, - ), - ), + darkTheme: darkTheme, home: const MyHomePage(), ); }, diff --git a/lib/data/provider/server.dart b/lib/data/provider/server.dart index ad1014ec..6dc000f9 100644 --- a/lib/data/provider/server.dart +++ b/lib/data/provider/server.dart @@ -87,13 +87,11 @@ class ServerProvider extends BusyProvider { _servers[i].client?.close(); _servers[i].client = null; } - notifyListeners(); return; } final idx = getServerIdx(spi.id); _servers[idx].client?.close(); _servers[idx].client = null; - notifyListeners(); } void addServer(ServerPrivateInfo spi) { diff --git a/lib/data/res/build_data.dart b/lib/data/res/build_data.dart index e5f1161b..dcc37a9b 100644 --- a/lib/data/res/build_data.dart +++ b/lib/data/res/build_data.dart @@ -2,8 +2,8 @@ class BuildData { static const String name = "ServerBox"; - static const int build = 241; + static const int build = 243; static const String engine = "Flutter 3.7.7 • channel stable • https://github.com/flutter/flutter.git\nFramework • revision 2ad6cd72c0 (13 days ago) • 2023-03-08 09:41:59 -0800\nEngine • revision 1837b5be5f\nTools • Dart 2.19.4 • DevTools 2.20.1\n"; - static const String buildAt = "2023-03-21 15:00:34.919375"; - static const int modifications = 6; + static const String buildAt = "2023-03-21 15:18:42.802605"; + static const int modifications = 5; } diff --git a/lib/main.dart b/lib/main.dart index cec90226..c8b7f49d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -82,20 +82,19 @@ Future main() async { runInZone(() async { await initApp(); runApp( - RebuildWidget( - child: MultiProvider( - providers: [ - ChangeNotifierProvider(create: (_) => locator()), - ChangeNotifierProvider(create: (_) => locator()), - ChangeNotifierProvider(create: (_) => locator()), - ChangeNotifierProvider(create: (_) => locator()), - ChangeNotifierProvider(create: (_) => locator()), - ChangeNotifierProvider(create: (_) => locator()), - ChangeNotifierProvider(create: (_) => locator()), - ChangeNotifierProvider( - create: (_) => locator()), - ChangeNotifierProvider(create: (_) => locator()), - ], + MultiProvider( + providers: [ + ChangeNotifierProvider(create: (_) => locator()), + ChangeNotifierProvider(create: (_) => locator()), + ChangeNotifierProvider(create: (_) => locator()), + ChangeNotifierProvider(create: (_) => locator()), + ChangeNotifierProvider(create: (_) => locator()), + ChangeNotifierProvider(create: (_) => locator()), + ChangeNotifierProvider(create: (_) => locator()), + ChangeNotifierProvider(create: (_) => locator()), + ChangeNotifierProvider(create: (_) => locator()), + ], + child: RebuildWidget( child: MyApp(), ), ), diff --git a/lib/view/page/home.dart b/lib/view/page/home.dart index 74174be4..0dbfddbf 100644 --- a/lib/view/page/home.dart +++ b/lib/view/page/home.dart @@ -68,6 +68,7 @@ class _MyHomePageState extends State void dispose() { super.dispose(); WidgetsBinding.instance.removeObserver(this); + _serverProvider.closeServer(); } @override