'React Native Expo. Android dark mode issue
When I change my mobile theme from light to dark it is affecting the background color of my react native app. I just want it to always remain white but it changes white to black when I change my mobile theme from light to dark. I have found a solution for React Native without Expo: React native android dark mode issue but I cannot use it because I don't have Android
folder.
Solution 1:[1]
Add "userInterfaceStyle" : "light"
in app.json / app.config.js
light (restrict app to support light theme only)
If this key is absent, the app will default to the light style.
Example app.json configuration:
{
"expo": {
"userInterfaceStyle": "automatic",
"ios": {
"userInterfaceStyle": "dark"
},
"android": {
"userInterfaceStyle": "light"
}
}
}
[Expo Reference Link][1]
or using Appearance
- expo install react-native-appearance
Example -
import React from 'react';
import { Text, SafeAreaView, StatusBar, StyleSheet } from 'react-native';
import { AppearanceProvider, useColorScheme } from 'react-native-appearance';
export default function AppContainer() {
return (
<AppearanceProvider>
<App />
</AppearanceProvider>
);
}
function App() {
const colorScheme = useColorScheme();
const themeStatusBarStyle = colorScheme === 'light' ? 'dark-content' : 'light-content';
const themeTextStyle = colorScheme === 'light' ? styles.lightThemeText : styles.darkThemeText;
const themeContainerStyle =
colorScheme === 'light' ? styles.lightContainer : styles.darkContainer;
return (
<SafeAreaView style={[styles.container, themeContainerStyle]}>
<StatusBar barStyle={themeStatusBarStyle} />
<Text style={[styles.text, themeTextStyle]}>Color scheme: {colorScheme}</Text>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
lightContainer: {
backgroundColor: '#D0D0C0',
},
darkContainer: {
backgroundColor: '#242C40',
},
lightThemeText: {
color: '#242C40',
},
darkThemeText: {
color: '#D0D0C0',
},
});
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |