From fe3f0c0e8542f8c017df3ae7f1a6e04c1b508cd5 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Tue, 12 May 2020 19:18:42 +0200 Subject: [PATCH] Automatically apply new dark theme settings --- lib/main.dart | 14 ++++++++++++-- lib/ui/routes/settings/application_settings.dart | 1 + lib/utils/ui_utils.dart | 5 +++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 8f09673..af5f564 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -28,7 +28,7 @@ void subMain() async { )); } -class ComunicApplication extends StatelessWidget { +class ComunicApplication extends StatefulWidget { final PreferencesHelper preferences; const ComunicApplication({ @@ -37,12 +37,22 @@ class ComunicApplication extends StatelessWidget { }) : assert(preferences != null), super(key: key); + @override + ComunicApplicationState createState() => ComunicApplicationState(); +} + +class ComunicApplicationState extends State { + /// Use this method to force the application to rebuild + void refresh() => setState(() {}); + @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: AccountHelper.isUserIDLoaded ? InitializeWidget() : LoginRoute(), - theme: preferences.preferences.enableDarkMode ? ThemeData.dark() : null, + theme: widget.preferences.preferences.enableDarkMode + ? ThemeData.dark() + : null, ); } } diff --git a/lib/ui/routes/settings/application_settings.dart b/lib/ui/routes/settings/application_settings.dart index 3ee1fe7..a0d116d 100644 --- a/lib/ui/routes/settings/application_settings.dart +++ b/lib/ui/routes/settings/application_settings.dart @@ -74,6 +74,7 @@ class __ApplicationSettingsScreenState /// Apply new settings _updatedSettings() { setState(() {}); + applyNewThemeSettings(context); } } diff --git a/lib/utils/ui_utils.dart b/lib/utils/ui_utils.dart index d559f28..6f4a8cd 100644 --- a/lib/utils/ui_utils.dart +++ b/lib/utils/ui_utils.dart @@ -1,4 +1,5 @@ import 'package:comunic/helpers/preferences_helper.dart'; +import 'package:comunic/main.dart'; import 'package:comunic/ui/routes/full_screen_image.dart'; import 'package:comunic/ui/widgets/dialogs/auto_sized_dialog_content_widget.dart'; import 'package:comunic/utils/intl_utils.dart'; @@ -222,3 +223,7 @@ void showAboutAppDialog(BuildContext context) { ), ]); } + +/// Apply new theme settings +void applyNewThemeSettings(BuildContext context) => + context.findAncestorStateOfType().refresh();