Темы¶
Темы позволяют изменять цвета различных компонентов, предоставляемых React Navigation. Темы можно использовать для:
- Настроить цвета в соответствии с вашим брендом
- Предоставить светлые и темные темы в зависимости от времени суток или предпочтений пользователя.
Базовое использование¶
Чтобы передать пользовательскую тему, можно передать свойство theme контейнеру навигации.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Вы можете динамически изменять реквизит темы, и все компоненты будут автоматически обновляться в соответствии с новой темой. Если вы не указали реквизит theme, то будет использоваться тема по умолчанию.
Тема - это JS-объект, содержащий список используемых цветов. Она содержит следующие свойства:
dark(boolean): Является ли эта тема темной или светлой.colors(object): Различные цвета, используемые компонентами навигации react:primary(string): Основной цвет приложения, используемый для оттенка различных элементов. Обычно для этого используется цвет вашего бренда.background(string): Цвет различных фоновых элементов, например, цвет фона для экранов.card(string): Цвет фона элементов, похожих на карту, таких как заголовки, панели вкладок и т.д.text(string): Цвет текста различных элементов.border(string): Цвет границ, например, границы заголовка, границы панели вкладок и т.д.notification(string): Цвет значка Tab Navigator.
При создании пользовательской темы необходимо указать все эти свойства.
Пример темы:
1 2 3 4 5 6 7 8 9 10 11 | |
Предоставление темы позаботится о стилизации всех официальных навигаторов. React Navigation также предоставляет несколько инструментов для настройки этих навигаторов, а экраны внутри навигаторов также могут использовать тему.
Встроенные темы¶
По мере того как операционные системы добавляют встроенную поддержку светлого и темного режимов, поддержка темного режима становится не столько модным трендом, сколько необходимостью соответствовать ожиданиям рядовых пользователей в отношении работы приложений. Для того чтобы обеспечить поддержку светлого и темного режимов в разумном соответствии с настройками ОС по умолчанию, эти темы встроены в React Navigation.
Импортировать темы по умолчанию и темные темы можно следующим образом:
1 2 3 4 | |
Использование предпочтений операционной системы¶
На iOS 13+ и Android 10+ можно получить предпочитаемую пользователем цветовую схему (dark или light) с помощью (Appearance API).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
Использование текущей темы в собственных компонентах¶
Для получения доступа к теме в любом компоненте, который рендерится внутри навигационного контейнера:, можно использовать хук useTheme. Он возвращает объект темы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |