52 lines
1.1 KiB
TypeScript
52 lines
1.1 KiB
TypeScript
|
|
/**
|
||
|
|
* NoVault App - 主入口
|
||
|
|
* React Native 记账应用
|
||
|
|
*/
|
||
|
|
|
||
|
|
import React from 'react';
|
||
|
|
import { StatusBar, StyleSheet, View } from 'react-native';
|
||
|
|
import { SafeAreaProvider } from 'react-native-safe-area-context';
|
||
|
|
import { GestureHandlerRootView } from 'react-native-gesture-handler';
|
||
|
|
|
||
|
|
// Contexts
|
||
|
|
import { ThemeProvider, AuthProvider, useTheme } from './src/contexts';
|
||
|
|
|
||
|
|
// Navigation
|
||
|
|
import RootNavigator from './src/navigation';
|
||
|
|
|
||
|
|
function AppContent() {
|
||
|
|
const { isDark, colors } = useTheme();
|
||
|
|
|
||
|
|
return (
|
||
|
|
<View style={styles.container}>
|
||
|
|
<StatusBar
|
||
|
|
barStyle={isDark ? 'light-content' : 'dark-content'}
|
||
|
|
backgroundColor={colors.background}
|
||
|
|
/>
|
||
|
|
<RootNavigator />
|
||
|
|
</View>
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
function App() {
|
||
|
|
return (
|
||
|
|
<GestureHandlerRootView style={styles.container}>
|
||
|
|
<SafeAreaProvider>
|
||
|
|
<ThemeProvider>
|
||
|
|
<AuthProvider>
|
||
|
|
<AppContent />
|
||
|
|
</AuthProvider>
|
||
|
|
</ThemeProvider>
|
||
|
|
</SafeAreaProvider>
|
||
|
|
</GestureHandlerRootView>
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
const styles = StyleSheet.create({
|
||
|
|
container: {
|
||
|
|
flex: 1,
|
||
|
|
},
|
||
|
|
});
|
||
|
|
|
||
|
|
export default App;
|