HomeHeader.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import * as React from 'react';
  2. import { StatusBar } from 'expo-status-bar';
  3. import { Appbar, Menu } from 'react-native-paper';
  4. import { useBoolean, useCreation } from '@umijs/hooks';
  5. import { Icon, Text, Button, Div } from 'react-native-magnus';
  6. import useModel from 'flooks';
  7. import { useNavigation } from '@react-navigation/native';
  8. import words from '../../../flooks/Words';
  9. import user from '../../../flooks/User';
  10. import MapModel from '../../Map/model';
  11. export default function Header() {
  12. const { chooseInfo, getChooseInfo } = useModel(MapModel, [
  13. 'chooseInfo',
  14. 'getChooseInfo',
  15. ]);
  16. const { state, setTrue, setFalse } = useBoolean(false);
  17. const { setlocal, TchangeToth, TchangeToChinese, local } = useModel(words);
  18. const { logout } = useModel(user, []);
  19. const navigation = useNavigation();
  20. const addressName = useCreation(() => {
  21. if (chooseInfo) {
  22. return chooseInfo.addressName;
  23. } else {
  24. return '';
  25. }
  26. }, [chooseInfo]);
  27. return (
  28. <>
  29. <StatusBar backgroundColor="transparent" style="dark" translucent />
  30. <Appbar.Header
  31. statusBarHeight={0}
  32. theme={{ colors: { primary: '#fff' } }}
  33. style={{
  34. elevation: 0,
  35. shadowOffset: {
  36. width: 0,
  37. height: 0,
  38. },
  39. shadowOpacity: 0,
  40. zIndex: 2,
  41. }}
  42. >
  43. <Button
  44. onPress={() => navigation.navigate('HomeAddress')}
  45. block
  46. bg="hiden"
  47. p={0}
  48. flex={1}
  49. >
  50. <Div flex={1} row>
  51. <Icon
  52. name="navigation"
  53. color="brand500"
  54. fontFamily="Feather"
  55. ml={15}
  56. />
  57. <Text
  58. numberOfLines={2}
  59. ellipsizeMode="tail"
  60. fontSize="xl"
  61. ml={5}
  62. fontWeight="bold"
  63. flex={1}
  64. >
  65. {getChooseInfo.loading ? '加载中...' : addressName}
  66. </Text>
  67. </Div>
  68. </Button>
  69. <Menu
  70. visible={state}
  71. onDismiss={setFalse}
  72. anchor={<Appbar.Action icon="dots-vertical" onPress={setTrue} />}
  73. >
  74. <Menu.Item
  75. onPress={() => {
  76. setFalse();
  77. navigation.navigate('MapScreen');
  78. }}
  79. title="地图选点测试"
  80. />
  81. <Menu.Item onPress={logout} title="退出登录" />
  82. <Menu.Item
  83. onPress={() => {
  84. setlocal();
  85. }}
  86. title={local ? TchangeToChinese : TchangeToth}
  87. />
  88. <Menu.Item onPress={() => {}} title="版本07.09.2(首页筛选组件)" />
  89. </Menu>
  90. </Appbar.Header>
  91. </>
  92. );
  93. }