1import React from 'react'; 2import {Image, StyleSheet} from 'react-native'; 3 4import {NavigationContainer} from '@react-navigation/native'; 5import {createNativeStackNavigator} from '@react-navigation/native-stack'; 6import bootstrap from './bootstrap'; 7import {routes} from './router'; 8import {Provider as PaperProvider} from 'react-native-paper'; 9import {GestureHandlerRootView} from 'react-native-gesture-handler'; 10import Dialogs from '@/components/dialogs'; 11import Toast from 'react-native-toast-message'; 12import Panels from '@/components/panels'; 13import {CustomTheme, DarkTheme, DefaultTheme} from './theme'; 14import {useConfig} from '@/common/localConfigManager'; 15 16// todo: load config 17/** 18 * 字体颜色 19 */ 20 21bootstrap(); 22const Stack = createNativeStackNavigator(); 23 24export default function Pages() { 25 const background = useConfig('setting.theme.background'); 26 const theme = useConfig('setting.theme.mode') ?? 'dark'; 27 28 return ( 29 <GestureHandlerRootView style={{flex: 1}}> 30 <PaperProvider theme={theme === 'dark'? CustomTheme : DefaultTheme}> 31 <NavigationContainer theme={theme === 'dark'? CustomTheme : DefaultTheme}> 32 <Image 33 style={style.blur} 34 blurRadius={15} 35 source={ 36 background 37 ? { 38 uri: background, 39 } 40 : require('@/assets/imgs/background.jpg') 41 }></Image> 42 43 <Stack.Navigator 44 initialRouteName={routes[0].path} 45 screenOptions={{ 46 statusBarColor: 'transparent', 47 statusBarTranslucent: true, 48 headerShown: false, 49 animation: 'slide_from_right', 50 animationDuration: 200, 51 }}> 52 {routes.map(route => ( 53 <Stack.Screen 54 key={route.path} 55 name={route.path} 56 component={route.component}></Stack.Screen> 57 ))} 58 </Stack.Navigator> 59 60 <Panels></Panels> 61 <Dialogs></Dialogs> 62 <Toast></Toast> 63 </NavigationContainer> 64 </PaperProvider> 65 </GestureHandlerRootView> 66 ); 67} 68 69const style = StyleSheet.create({ 70 blur: { 71 width: '100%', 72 height: '100%', 73 position: 'absolute', 74 top: 0, 75 left: 0, 76 right: 0, 77 bottom: 0, 78 }, 79}); 80