1import React from 'react'; 2import {NavigationContainer} from '@react-navigation/native'; 3import {createNativeStackNavigator} from '@react-navigation/native-stack'; 4import bootstrap from './bootstrap'; 5import {routes} from './router'; 6import {Provider as PaperProvider} from 'react-native-paper'; 7import {GestureHandlerRootView} from 'react-native-gesture-handler'; 8import Dialogs from '@/components/dialogs'; 9import Toast from 'react-native-toast-message'; 10import Panels from '@/components/panels'; 11import {CustomTheme, DefaultTheme} from './theme'; 12import Config from '@/core/config'; 13import PageBackground from '@/components/base/pageBackground'; 14import {SafeAreaProvider} from 'react-native-safe-area-context'; 15import toastConfig from '@/components/base/toast'; 16import useBootstrap from './useBootstrap'; 17import Debug from '@/components/debug'; 18import {ImageViewComponent} from '@/components/imageViewer'; 19import {PortalHost} from '@/components/base/portal'; 20 21/** 22 * 字体颜色 23 */ 24 25bootstrap(); 26const Stack = createNativeStackNavigator<any>(); 27 28export default function Pages() { 29 const themeName = Config.useConfig('setting.theme.mode') ?? 'dark'; 30 const themeColors = Config.useConfig('setting.theme.colors') ?? {}; 31 const theme = themeName.includes('dark') ? CustomTheme : DefaultTheme; 32 const isCustom = themeName.includes('custom') ? true : false; 33 const mergedTheme = isCustom 34 ? { 35 ...theme, 36 colors: { 37 ...theme.colors, 38 ...themeColors, 39 }, 40 } 41 : theme; 42 43 useBootstrap(); 44 45 return ( 46 <GestureHandlerRootView style={{flex: 1}}> 47 <PaperProvider theme={mergedTheme}> 48 <SafeAreaProvider> 49 <NavigationContainer theme={mergedTheme}> 50 <PageBackground /> 51 <Stack.Navigator 52 initialRouteName={routes[0].path} 53 screenOptions={{ 54 statusBarColor: 'transparent', 55 statusBarTranslucent: true, 56 headerShown: false, 57 animation: 'slide_from_right', 58 animationDuration: 100, 59 }}> 60 {routes.map(route => ( 61 <Stack.Screen 62 key={route.path} 63 name={route.path} 64 component={route.component} 65 /> 66 ))} 67 </Stack.Navigator> 68 69 <Panels /> 70 <Dialogs /> 71 <ImageViewComponent /> 72 <Toast config={toastConfig} /> 73 <Debug /> 74 <PortalHost /> 75 </NavigationContainer> 76 </SafeAreaProvider> 77 </PaperProvider> 78 </GestureHandlerRootView> 79 ); 80} 81