diff --git a/web/dart/theme.dart b/web/dart/theme.dart index 823a3f9..676bfd2 100644 --- a/web/dart/theme.dart +++ b/web/dart/theme.dart @@ -21,8 +21,6 @@ final themes = { final localStorage = window.localStorage; -var currentTheme = themes[localStorage['theme']]; - void enableThemeChanger() { final darkBtn = querySelector('#darkBtn'); final lightBtn = querySelector('#lightBtn'); @@ -34,10 +32,12 @@ void enableThemeChanger() { } Future setTheme() async { - if (currentTheme == null) { - currentTheme = themes['light']; - localStorage['theme'] = currentTheme.getName(); - } + final currentTheme = themes[localStorage['theme']] ?? + () { + final devicePrefersDark = + window.matchMedia('(prefers-color-scheme: dark)').matches; + return themes[devicePrefersDark ? 'dark' : 'light']; + }(); querySelector('body') ..classes.clear() ..classes.add(currentTheme.getName());