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