init: 初始化模板项目
This commit is contained in:
48
apps/expo/app/_layout.tsx
Normal file
48
apps/expo/app/_layout.tsx
Normal file
@@ -0,0 +1,48 @@
|
||||
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>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user