From 9725e24b38e2aeb3a3c2736596bdb263eb70f1a3 Mon Sep 17 00:00:00 2001 From: Lucien Cartier-Tilet Date: Thu, 21 May 2020 07:34:10 +0200 Subject: [PATCH] Fixes #8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The default theme is now chosen based on the user’s preference stored in their device. If the device uses a dark theme, the website’s dark theme will be used by default. Otherwise, the light theme will be used by default. --- web/dart/theme.dart | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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());