xref: /MusicFree/src/entry/index.tsx (revision 65fc5a50efa14abe14c2160e94fda6c7c75cab48)
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