generated from flexlark/app-template
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import { useEffect } from 'react'
|
|
import { useColorScheme } from 'react-native'
|
|
import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native'
|
|
import { useFonts } from 'expo-font'
|
|
import { SplashScreen, Stack } from 'expo-router'
|
|
import { Provider } from 'app/provider'
|
|
import { NativeToast } from '@my/ui/src/NativeToast'
|
|
|
|
export const unstable_settings = {
|
|
// Ensure that reloading on `/user` keeps a back button present.
|
|
initialRouteName: 'Home',
|
|
}
|
|
|
|
// Prevent the splash screen from auto-hiding before asset loading is complete.
|
|
SplashScreen.preventAutoHideAsync()
|
|
|
|
export default function App() {
|
|
const [interLoaded, interError] = useFonts({
|
|
Inter: require('@tamagui/font-inter/otf/Inter-Medium.otf'),
|
|
InterBold: require('@tamagui/font-inter/otf/Inter-Bold.otf'),
|
|
})
|
|
|
|
useEffect(() => {
|
|
if (interLoaded || interError) {
|
|
// Hide the splash screen after the fonts have loaded (or an error was returned) and the UI is ready.
|
|
SplashScreen.hideAsync()
|
|
}
|
|
}, [interLoaded, interError])
|
|
|
|
if (!interLoaded && !interError) {
|
|
return null
|
|
}
|
|
|
|
return <RootLayoutNav />
|
|
}
|
|
|
|
function RootLayoutNav() {
|
|
const colorScheme = useColorScheme()
|
|
|
|
return (
|
|
<Provider>
|
|
<ThemeProvider value={colorScheme === 'dark' ? DarkTheme : DefaultTheme}>
|
|
<Stack />
|
|
<NativeToast />
|
|
</ThemeProvider>
|
|
</Provider>
|
|
)
|
|
}
|