1ec26b768S猫头猫import React from 'react'; 2ec26b768S猫头猫import {Keyboard, StyleSheet} from 'react-native'; 3bf6e62f2S猫头猫import rpx from '@/utils/rpx'; 44060c00aS猫头猫import {useNavigation} from '@react-navigation/native'; 5bf6e62f2S猫头猫import {useAtom, useSetAtom} from 'jotai'; 6dec7a5f8S猫头猫import { 7dec7a5f8S猫头猫 pageStatusAtom, 8dec7a5f8S猫头猫 PageStatus, 9dec7a5f8S猫头猫 queryAtom, 10dec7a5f8S猫头猫 searchResultsAtom, 11dec7a5f8S猫头猫 initSearchResults, 12dec7a5f8S猫头猫} from '../store/atoms'; 13bf6e62f2S猫头猫import useSearch from '../hooks/useSearch'; 14*e650bfb3S猫头猫import {Appbar, Searchbar} from 'react-native-paper'; 15bf6e62f2S猫头猫import {addHistory} from '../common/historySearch'; 16bf6e62f2S猫头猫import {fontSizeConst} from '@/constants/uiConst'; 17ec26b768S猫头猫import useColors from '@/hooks/useColors'; 18*e650bfb3S猫头猫import Button from '@/components/base/button'; 19bf6e62f2S猫头猫 204060c00aS猫头猫export default function NavBar() { 21bf6e62f2S猫头猫 const navigation = useNavigation(); 22bf6e62f2S猫头猫 const search = useSearch(); 23bf6e62f2S猫头猫 const [query, setQuery] = useAtom(queryAtom); 24bf6e62f2S猫头猫 const setPageStatus = useSetAtom(pageStatusAtom); 25ec26b768S猫头猫 const colors = useColors(); 26a4ae8da5S猫头猫 const setSearchResultsState = useSetAtom(searchResultsAtom); 27bf6e62f2S猫头猫 28bf6e62f2S猫头猫 const onSearchSubmit = async () => { 29bf6e62f2S猫头猫 if (query === '') { 30bf6e62f2S猫头猫 return; 31bf6e62f2S猫头猫 } 32a4ae8da5S猫头猫 setSearchResultsState(initSearchResults); 33bf6e62f2S猫头猫 setPageStatus(prev => 34bf6e62f2S猫头猫 prev === PageStatus.EDITING ? PageStatus.SEARCHING : prev, 35bf6e62f2S猫头猫 ); 360b940038S猫头猫 await search(query, 1); 37bf6e62f2S猫头猫 await addHistory(query); 38bf6e62f2S猫头猫 }; 39bf6e62f2S猫头猫 40bf6e62f2S猫头猫 return ( 41bf6e62f2S猫头猫 <Appbar style={[style.appbar, {backgroundColor: colors.primary}]}> 42bf6e62f2S猫头猫 <Appbar.BackAction 43bf6e62f2S猫头猫 onPress={() => { 44bf6e62f2S猫头猫 // !!这个组件有bug,输入法拉起的时候返回会默认打开panel 45bf6e62f2S猫头猫 Keyboard.dismiss(); 46bf6e62f2S猫头猫 navigation.goBack(); 474060c00aS猫头猫 }} 484060c00aS猫头猫 /> 49bf6e62f2S猫头猫 <Searchbar 50bf6e62f2S猫头猫 autoFocus 51bf6e62f2S猫头猫 inputStyle={style.input} 52bf6e62f2S猫头猫 style={style.searchBar} 533b870a26S猫头猫 accessible 543b870a26S猫头猫 accessibilityLabel="搜索框" 553b870a26S猫头猫 accessibilityHint={'输入要搜索的歌曲'} 56bf6e62f2S猫头猫 onFocus={() => { 57bf6e62f2S猫头猫 setPageStatus(PageStatus.EDITING); 58bf6e62f2S猫头猫 }} 59bf6e62f2S猫头猫 placeholder="输入要搜索的歌曲" 60bf6e62f2S猫头猫 onSubmitEditing={onSearchSubmit} 61dec7a5f8S猫头猫 onChangeText={_ => { 62dec7a5f8S猫头猫 if (_ === '') { 63dec7a5f8S猫头猫 setPageStatus(PageStatus.EDITING); 64dec7a5f8S猫头猫 } 65dec7a5f8S猫头猫 setQuery(_); 66dec7a5f8S猫头猫 }} 674060c00aS猫头猫 value={query} 684060c00aS猫头猫 /> 69*e650bfb3S猫头猫 <Button style={style.button} onPress={onSearchSubmit}> 70bf6e62f2S猫头猫 搜索 71bf6e62f2S猫头猫 </Button> 72bf6e62f2S猫头猫 </Appbar> 73bf6e62f2S猫头猫 ); 74bf6e62f2S猫头猫} 75bf6e62f2S猫头猫 76bf6e62f2S猫头猫const style = StyleSheet.create({ 77bf6e62f2S猫头猫 appbar: { 78bf6e62f2S猫头猫 shadowColor: 'transparent', 79bf6e62f2S猫头猫 }, 80*e650bfb3S猫头猫 button: { 81*e650bfb3S猫头猫 paddingHorizontal: rpx(24), 82*e650bfb3S猫头猫 }, 83bf6e62f2S猫头猫 searchBar: { 84bf6e62f2S猫头猫 minWidth: rpx(375), 85bf6e62f2S猫头猫 flex: 1, 86bf6e62f2S猫头猫 borderRadius: rpx(64), 87c4466882S猫头猫 height: '72%', 8898547244S猫头猫 maxHeight: rpx(64), 89ec26b768S猫头猫 color: '#666666', 90dc1c1f5aS猫头猫 alignItems: 'center', 91bf6e62f2S猫头猫 }, 92bf6e62f2S猫头猫 input: { 93bf6e62f2S猫头猫 padding: 0, 9498547244S猫头猫 height: '100%', 95bf6e62f2S猫头猫 color: '#666666', 96ec26b768S猫头猫 fontSize: fontSizeConst.subTitle, 97bf6e62f2S猫头猫 textAlignVertical: 'center', 98bf6e62f2S猫头猫 includeFontPadding: false, 99ec26b768S猫头猫 }, 100bf6e62f2S猫头猫}); 101