Определить, активен ли темный режим ОС

Я ищу способ определить, активен ли темный режим ОС, используя Flutter. Я просто хочу, чтобы мое приложение соответствовало настройке темного режима ОС. Я погуглил, и большинство тем посвящено настройке и переключению темного режима, а не обнаружению темного режима ОС.


person John King    schedule 28.05.2021    source источник
comment
возможен дубликат? stackoverflow.com/questions/56304215/   -  person Noor Wachid    schedule 28.05.2021
comment
суть вопроса та же, но на той ветке ответ не идеальный, не работает со старым телефоном (ошибка красного экрана). к счастью, на этот раз я получил надежный ответ.   -  person John King    schedule 28.05.2021


Ответы (2)


Вы можете использовать platformBrightness для определения текущего режима ОС

bool isDarkMode() {
    final darkMode = WidgetsBinding.instance.window.platformBrightness;
    if (darkMode == Brightness.dark) {
      return true;
    } else {
      return false;
    }
  }
person Hemal    schedule 28.05.2021
comment
Спасибо, ваше решение работает отлично. Я пробовал это на старом телефоне и на новом телефоне. В старом телефоне ОС не поддерживает темный режим, он возвращает false, что правильно. - person John King; 28.05.2021

Попробуйте это внутри вашего метода сборки

var brightness = MediaQuery.of(context).platformBrightness;
bool darkModeOn = brightness == Brightness.dark;
person Indrajit Sharma    schedule 28.05.2021
comment
Спасибо за ваш ответ, но похоже, что со старым телефоном не работает ОС, которая не поддерживает темный режим, выдает ошибку красного экрана. - person John King; 28.05.2021