Сделайте собственный экран-заставку зависимым от предпочтений пользователя, а не от темы устройства во флаттере

Я добавил собственный экран запуска для темного и светлого режима, поэтому, когда мое устройство в ночном режиме, цвет фона экрана запуска черный, а когда устройство в светлом режиме - белый цвет.

Проблема:

Я хочу, чтобы цвет зависел от пользователя, если устройство пользователя в ночном режиме и он выбирает световой режим внутри моего приложения, цвет фона экрана запуска должен быть белым

дополнительные объяснения:

Если устройство находится в ночном режиме, а моя тема приложения - в светлом режиме, цвет фона экрана запуска должен быть белым (зависит от темы приложения, а не на устройстве)

как я могу добиться этого с помощью собственного кода?


person Mahmoud Haj Ali    schedule 23.05.2021    source источник


Ответы (1)


Вы можете добавить указанный ниже тег к корневому элементу в вашем собственном xml-файле заставки.

android:forceDarkAllowed="false"

Этот флаг игнорирует темный режим системы.

Теперь, чтобы включить / отключить ночной режим для одного действия, вы можете использовать приведенный ниже код в своем методе OnCreate перед вызовом метода super.onCreate:

getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO); // Disabled
getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES); // Enabled
person AlphaOne    schedule 23.05.2021
comment
спасибо, но это заставит заставку всегда быть светлым режимом Я хочу изменить тему между темным режимом и светлым режимом, но не в зависимости от системного режима - person Mahmoud Haj Ali; 23.05.2021
comment
Я обновил свой ответ. Пожалуйста, проверьте это один раз. - person AlphaOne; 23.05.2021
comment
Я ценю ваше редактирование, но в моей основной деятельности суперклассом является FlutterActivity, а метода onCreate нет, поэтому я попытался переопределить его, но он не видит getDelegate () и AppCompatDelegate - person Mahmoud Haj Ali; 23.05.2021
comment
Ооо я думал это для родного. Извините, это моя ошибка. сослаться на этот ответ. Это может помочь: stackoverflow.com/a/64185945/6147653 - person AlphaOne; 23.05.2021
comment
Неважно, я забыл добавить слово-треп в заголовке вопроса - person Mahmoud Haj Ali; 23.05.2021
comment
Ответ, к сожалению, не помогает, потому что он хочет изменить тему со стороны флаттера, а не с родной стороны - person Mahmoud Haj Ali; 23.05.2021