App.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import * as React from 'react';
  2. import { StatusBar, Platform, StyleSheet, View } from 'react-native';
  3. import { NavigationContainer, CommonActions } from '@react-navigation/native';
  4. import {
  5. createStackNavigator,
  6. CardStyleInterpolators,
  7. } from '@react-navigation/stack';
  8. import { UseAPIProvider } from '@umijs/use-request';
  9. import './i18n'; // 在这里导入 i18n.js
  10. import { Provider as PaperProvider } from 'react-native-paper';
  11. import { Provider } from '@ant-design/react-native';
  12. import { ThemeProvider } from 'react-native-magnus';
  13. import useModel from 'flooks';
  14. import { useUpdateEffect } from '@umijs/hooks';
  15. import { navigationRef } from './navigation/RootNavigation';
  16. import useCachedResources from './hooks/useCachedResources';
  17. import BottomTabNavigator from './navigation/BottomTabNavigator';
  18. import BasicScreens from './navigation/BaseNavigator';
  19. import Toast from './flooks/Toast';
  20. import user from './flooks/User';
  21. import request from './Utils/RequestUtils';
  22. import theme from './constants/Theme';
  23. import ThemeMagnus from './constants/ThemeMagnus';
  24. const Stack = createStackNavigator();
  25. export default function App() {
  26. const isLoadingComplete = useCachedResources();
  27. // 初始化 Toast
  28. useModel(Toast, []);
  29. const { id } = useModel(user, ['id']);
  30. useUpdateEffect(() => {
  31. let initName = '';
  32. if (id === 0) {
  33. // 未登录
  34. initName = 'Login';
  35. }
  36. // else if (__DEV__) {
  37. // initName = 'OrderDetail';
  38. // }
  39. else if (id !== null) {
  40. // 已登录
  41. initName = 'Home';
  42. }
  43. if (initName) {
  44. navigationRef.current.dispatch(
  45. CommonActions.reset({
  46. index: 0,
  47. routes: [
  48. {
  49. name: initName,
  50. // name: 'PayOrder',
  51. },
  52. ],
  53. })
  54. );
  55. }
  56. }, [id]);
  57. if (!isLoadingComplete) {
  58. return null;
  59. } else {
  60. return (
  61. <View style={styles.container}>
  62. <ThemeProvider theme={ThemeMagnus}>
  63. <Provider>
  64. <PaperProvider theme={theme}>
  65. {Platform.OS !== 'ios' && (
  66. <StatusBar translucent={false} backgroundColor="#FFC21C" />
  67. )}
  68. <UseAPIProvider
  69. value={{
  70. requestMethod: request,
  71. }}
  72. >
  73. <NavigationContainer ref={navigationRef}>
  74. <Stack.Navigator
  75. initRouteName="InitApp"
  76. screenOptions={{
  77. headerShown: false,
  78. cardOverlayEnabled: true,
  79. cardStyle: { backgroundColor: '#eee', flex: 1 },
  80. contentStyle: { backgroundColor: '#eee', flex: 1 },
  81. gestureEnabled: true,
  82. stackPresentation: 'push',
  83. cardStyleInterpolator:
  84. CardStyleInterpolators.forHorizontalIOS,
  85. }}
  86. >
  87. {/* 基础功能页面 */}
  88. {BasicScreens(Stack.Screen)}
  89. <Stack.Screen name="Home" component={BottomTabNavigator} />
  90. </Stack.Navigator>
  91. </NavigationContainer>
  92. </UseAPIProvider>
  93. </PaperProvider>
  94. </Provider>
  95. </ThemeProvider>
  96. </View>
  97. );
  98. }
  99. }
  100. const styles = StyleSheet.create({
  101. container: {
  102. flex: 1,
  103. backgroundColor: '#fff',
  104. },
  105. });