1import React, {useEffect} 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'; 16import RNBootSplash from 'react-native-bootsplash'; 17import logManager from '@/common/logManager'; 18import PageBackground from '@/components/pageBackground'; 19import {SafeAreaProvider} from 'react-native-safe-area-context'; 20 21/** 22 * 字体颜色 23 */ 24 25bootstrap(); 26const Stack = createNativeStackNavigator(); 27 28export default function Pages() { 29 const themeName = useConfig('setting.theme.mode') ?? 'dark'; 30 const themeColors = useConfig('setting.theme.colors') ?? {}; 31 const theme = themeName === 'dark' ? CustomTheme : DefaultTheme; 32 const mergedTheme = { 33 ...theme, 34 colors: { 35 ...theme.colors, 36 ...themeColors, 37 }, 38 }; 39 useEffect(() => { 40 if (__DEV__) { 41 RNBootSplash.hide({fade: true}); 42 logManager.error('TEST'); 43 } 44 }, []); 45 46 return ( 47 <GestureHandlerRootView style={{flex: 1}}> 48 <PaperProvider theme={mergedTheme}> 49 <SafeAreaProvider> 50 <NavigationContainer theme={mergedTheme}> 51 <PageBackground></PageBackground> 52 <Stack.Navigator 53 initialRouteName={routes[0].path} 54 screenOptions={{ 55 statusBarColor:'transparent', 56 statusBarTranslucent: true, 57 headerShown: false, 58 animation: 'slide_from_right', 59 animationDuration: 200, 60 }}> 61 {routes.map(route => ( 62 <Stack.Screen 63 key={route.path} 64 name={route.path} 65 component={route.component}></Stack.Screen> 66 ))} 67 </Stack.Navigator> 68 69 <Panels></Panels> 70 <Dialogs></Dialogs> 71 <Share></Share> 72 <Toast></Toast> 73 </NavigationContainer> 74 </SafeAreaProvider> 75 </PaperProvider> 76 </GestureHandlerRootView> 77 ); 78} 79 80const style = StyleSheet.create({ 81 blur: { 82 width: '100%', 83 height: '100%', 84 position: 'absolute', 85 top: 0, 86 left: 0, 87 right: 0, 88 bottom: 0, 89 }, 90}); 91