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'; 16import PageBackground from '@/components/pageBackground'; 17 18// todo: load config 19/** 20 * 字体颜色 21 */ 22 23bootstrap(); 24const Stack = createNativeStackNavigator(); 25 26export default function Pages() { 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 <PageBackground></PageBackground> 34 <Stack.Navigator 35 initialRouteName={routes[0].path} 36 screenOptions={{ 37 statusBarColor: 'transparent', 38 statusBarTranslucent: true, 39 headerShown: false, 40 animation: 'slide_from_right', 41 animationDuration: 200, 42 }}> 43 {routes.map(route => ( 44 <Stack.Screen 45 key={route.path} 46 name={route.path} 47 component={route.component}></Stack.Screen> 48 ))} 49 </Stack.Navigator> 50 51 <Panels></Panels> 52 <Dialogs></Dialogs> 53 <Share></Share> 54 <Toast></Toast> 55 </NavigationContainer> 56 </PaperProvider> 57 </GestureHandlerRootView> 58 ); 59} 60 61const style = StyleSheet.create({ 62 blur: { 63 width: '100%', 64 height: '100%', 65 position: 'absolute', 66 top: 0, 67 left: 0, 68 right: 0, 69 bottom: 0, 70 }, 71}); 72