Есть ли способ изменить режим тем приложения (UI) на темный или светлый динамически в зависимости от местного времени пользователя с помощью React-Native? - PullRequest
0 голосов
/ 02 ноября 2019

Я пробовал код ниже, но все еще не повезло ...

Я получаю сообщение об ошибке: AppThemeState is undefined.

import { AppThemeState } from 'react-native';


const bannerContainerStyle =
AppThemeState.currentTheme === 'dark' ? styles.mainContainerViewDark : styles.mainContainerViewLight;

1 Ответ

0 голосов
/ 04 ноября 2019

Если вы хотите быть в dark mode в evening и light в morning, в зависимости от местного времени, вы можете:

var themColor = ""
var hours = new Date().getHours();
if (hours >20 || hours < 5) {
   themColor = "dark"
} else {
   themColor = "light"
}
const bannerContainerStyle = themColor === "dark" ? styles.mainContainerViewDark : styles.mainContainerViewLight;

Существуют способы получения иобрабатывать информацию о текущем местоположении через GPS, но я представлю простой метод. Получение и обработка информации о языке использования устройства.

Вы можете запустить

$ npm install --save react-native-localize
# --- or ---
$ yarn add react-native-localize
//Don't forget to run pod install after that !

Использование

import * as RNLocalize from "react-native-localize";

const localCode =  RNLocalize.getLocales()
const countryCode = localCode.countryCode
if (countryCode === "IN" && hours >17 || countryCode === "IN" && hours < 5) {
   themColor = "dark"
} else if (countryCode === "AU" && hours > 19 || countryCode === "AU" && hours < 5)  {
   themColor = "dark"
} else {
   themColor = "light"
}
...