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