Kliko/app/_layout.tsx
2024-08-08 14:05:17 +02:00

50 lines
1.8 KiB
TypeScript

import { useFonts } from 'expo-font';
import { Slot, SplashScreen, Stack } from 'expo-router';
import { Provider } from 'react-redux';
import { useEffect } from 'react';
import 'react-native-reanimated';
import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native';
import Toast from 'react-native-toast-message';
import { AutocompleteDropdownContextProvider } from 'react-native-autocomplete-dropdown';
import { AppProvider } from '@/context/AppProvider';
import { useColorScheme } from '@/hooks/useColorScheme';
import { store } from '@/store/store';
// Prevent the splash screen from auto-hiding before asset loading is complete.
SplashScreen.preventAutoHideAsync();
export default function RootLayout() {
const colorScheme = useColorScheme();
const [ loaded ] = useFonts( {
SpaceMono: require( '../assets/fonts/SpaceMono-Regular.ttf' ),
} );
useEffect( () => {
if (loaded) {
SplashScreen.hideAsync();
}
}, [ loaded ] );
if (!loaded) {
return null;
}
return (
<Provider store={store}>
<AppProvider>
<AutocompleteDropdownContextProvider>
<ThemeProvider value={colorScheme === 'dark' ? DarkTheme : DefaultTheme}>
<Stack>
<Stack.Screen name="(tabs)" options={{ headerShown: false }}/>
<Stack.Screen name="(onboarding)/start" options={{ headerShown: false }}/>
<Stack.Screen name="index" options={{ headerShown: false }}/>
</Stack>
<Toast/>
</ThemeProvider>
</AutocompleteDropdownContextProvider>
</AppProvider>
</Provider>
);
}