diff --git a/lib/main.dart b/lib/main.dart index 167373d87..2ea31bf03 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -25,7 +25,6 @@ import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/src/screens/root/root.dart'; import 'package:cake_wallet/store/app_store.dart'; import 'package:cake_wallet/store/authentication_store.dart'; -import 'package:cake_wallet/themes/core/material_base_theme.dart'; import 'package:cake_wallet/themes/utils/theme_provider.dart'; import 'package:cake_wallet/utils/device_info.dart'; import 'package:cake_wallet/utils/exception_handler.dart'; @@ -290,30 +289,7 @@ class App extends StatefulWidget { AppState createState() => AppState(); } -class AppState extends State with SingleTickerProviderStateMixin, WidgetsBindingObserver { - @override - void initState() { - super.initState(); - WidgetsBinding.instance.addObserver(this); - } - - @override - void dispose() { - WidgetsBinding.instance.removeObserver(this); - super.dispose(); - } - - @override - void didChangePlatformBrightness() { - final appStore = getIt.get(); - if (appStore.themeStore.themeMode == ThemeMode.system) { - final systemTheme = appStore.themeStore.getThemeFromSystem(); - if (appStore.themeStore.currentTheme != systemTheme) { - appStore.themeStore.setTheme(systemTheme); - } - } - } - +class AppState extends State with SingleTickerProviderStateMixin { @override Widget build(BuildContext context) { return Observer( diff --git a/lib/src/screens/root/root.dart b/lib/src/screens/root/root.dart index eaf8a727b..6112673b1 100644 --- a/lib/src/screens/root/root.dart +++ b/lib/src/screens/root/root.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:io'; import 'package:cake_wallet/bitcoin/bitcoin.dart'; import 'package:cake_wallet/core/auth_service.dart'; import 'package:cake_wallet/core/totp_request_details.dart'; @@ -159,6 +160,18 @@ class RootState extends State with WidgetsBindingObserver { } } + @override + void didChangePlatformBrightness() { + if (widget.appStore.themeStore.themeMode == ThemeMode.system) { + Future.delayed(Duration(milliseconds: Platform.isIOS ? 500 : 0), () { + final systemTheme = widget.appStore.themeStore.getThemeFromSystem(); + if (widget.appStore.themeStore.currentTheme != systemTheme) { + widget.appStore.themeStore.setTheme(systemTheme); + } + }); + } + } + @override Widget build(BuildContext context) { // this only happens when the app has been in the background for some time diff --git a/lib/themes/core/theme_store.dart b/lib/themes/core/theme_store.dart index 3276d6caa..687e24e64 100644 --- a/lib/themes/core/theme_store.dart +++ b/lib/themes/core/theme_store.dart @@ -168,7 +168,7 @@ abstract class ThemeStoreBase with Store { } MaterialThemeBase getThemeFromSystem() { - final systemBrightness = WidgetsBinding.instance.window.platformBrightness; + final systemBrightness = WidgetsBinding.instance.platformDispatcher.platformBrightness; return systemBrightness == Brightness.dark ? ThemeList.darkTheme : ThemeList.lightTheme; } }