#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. Ответ, к сожалению, не помогает, потому что он хочет изменить тему со стороны флаттера, а не с родной стороны