feat(mobile): Implement persistent theme selection

This commit is contained in:
2025-12-06 14:08:00 +00:00
parent ed0faaa4d6
commit 19ff225762
7 changed files with 146 additions and 19 deletions

View File

@@ -1,8 +1,9 @@
import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native';
import { DarkTheme, DefaultTheme, ThemeProvider as NavigationThemeProvider } from '@react-navigation/native';
import { Stack } from 'expo-router';
import { StatusBar } from 'expo-status-bar';
import 'react-native-reanimated';
import { ThemeProvider } from '@/context/ThemeContext';
import { useColorScheme } from '@/hooks/use-color-scheme';
export const unstable_settings = {
@@ -10,15 +11,23 @@ export const unstable_settings = {
};
export default function RootLayout() {
return (
<ThemeProvider>
<RootLayoutNav />
</ThemeProvider>
);
}
function RootLayoutNav() {
const colorScheme = useColorScheme();
return (
<ThemeProvider value={colorScheme === 'dark' ? DarkTheme : DefaultTheme}>
<NavigationThemeProvider value={colorScheme === 'dark' ? DarkTheme : DefaultTheme}>
<Stack>
<Stack.Screen name="(tabs)" options={{ headerShown: false }} />
<Stack.Screen name="modal" options={{ presentation: 'modal', title: 'Modal' }} />
</Stack>
<StatusBar style="auto" />
</ThemeProvider>
</NavigationThemeProvider>
);
}