App.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { StatusBar } from 'expo-status-bar';
  2. import React from 'react';
  3. import * as SplashScreen from 'expo-splash-screen';
  4. import { Text, Div, Button } from 'react-native-magnus';
  5. import { SafeAreaProvider } from 'react-native-safe-area-context';
  6. import { ThemeProvider } from 'react-native-magnus';
  7. import { UseRequestProvider, useRequest } from 'ahooks';
  8. import './i18n';
  9. import useCachedResources from './hooks/useCachedResources';
  10. import useColorScheme from './hooks/useColorScheme';
  11. import Navigation from './navigation';
  12. import useModel from 'flooks';
  13. import theme from './constants/Theme';
  14. import request from './utils/RequestUtils';
  15. import User from './stores/User';
  16. export default function App() {
  17. const isLoadingComplete = useCachedResources();
  18. const colorScheme = useColorScheme();
  19. const { id, getInit, initialRouteName } = useModel(User, [
  20. 'id',
  21. 'initialRouteName',
  22. ]);
  23. const { loading, run } = useRequest(getInit, {
  24. refreshDeps: [id],
  25. debounceInterval: 2000,
  26. });
  27. if (!isLoadingComplete || !initialRouteName) {
  28. return null;
  29. } else {
  30. SplashScreen.hideAsync();
  31. return (
  32. <UseRequestProvider
  33. value={{
  34. refreshOnWindowFocus: true,
  35. requestMethod: request,
  36. }}
  37. >
  38. <ThemeProvider theme={theme}>
  39. <SafeAreaProvider>
  40. <Div flex={1}>
  41. <Button
  42. fontSize="xl"
  43. position="absolute"
  44. zIndex={999}
  45. bg="transparent"
  46. color="black"
  47. bottom={50}
  48. left={20}
  49. >
  50. 骑手端测试版 (0820) 版本三
  51. </Button>
  52. <Navigation colorScheme={colorScheme} />
  53. </Div>
  54. <StatusBar />
  55. </SafeAreaProvider>
  56. </ThemeProvider>
  57. </UseRequestProvider>
  58. );
  59. }
  60. }