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

#android #flutter #themes #splash-screen #launch-screen

Вопрос:

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

Проблема в том, что:

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

подробнее объясните:

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

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

Ответ №1:

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

 android:forceDarkAllowed="false"
 

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

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

 getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO); // Disabled
getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES); // Enabled
 

Комментарии:

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

2. Я обновил свой ответ. Пожалуйста, проверьте это один раз.

3. Я ценю ваше редактирование, но в моей основной деятельности суперклассом является FlutterActivity , и метода onCreate нет, поэтому я попытался переопределить его, но он не видит getDelegate() и AppCompatDelegate

4. Не бери в голову, я забыл добавить слово «флаттер» к названию вопроса

5. Ответ, к сожалению, не помогает, потому что он хочет изменить тему со стороны флаттера, а не с родной стороны