1*ec26b768S猫头猫import React from 'react'; 2*ec26b768S猫头猫import {Keyboard, StyleSheet} from 'react-native'; 3bf6e62f2S猫头猫import rpx from '@/utils/rpx'; 4bf6e62f2S猫头猫import {useNavigation, useTheme} from '@react-navigation/native'; 5bf6e62f2S猫头猫import {useAtom, useSetAtom} from 'jotai'; 6bf6e62f2S猫头猫import {pageStatusAtom, PageStatus, queryAtom} from '../store/atoms'; 7bf6e62f2S猫头猫import useSearch from '../hooks/useSearch'; 8bf6e62f2S猫头猫import {Appbar, Button, Searchbar} from 'react-native-paper'; 9bf6e62f2S猫头猫import {addHistory} from '../common/historySearch'; 10bf6e62f2S猫头猫import {fontSizeConst} from '@/constants/uiConst'; 11bf6e62f2S猫头猫import useTextColor from '@/hooks/useTextColor'; 12*ec26b768S猫头猫import useColors from '@/hooks/useColors'; 13bf6e62f2S猫头猫 14bf6e62f2S猫头猫interface INavBarProps {} 15bf6e62f2S猫头猫export default function NavBar(props: INavBarProps) { 16bf6e62f2S猫头猫 const navigation = useNavigation(); 17bf6e62f2S猫头猫 const search = useSearch(); 18bf6e62f2S猫头猫 const [query, setQuery] = useAtom(queryAtom); 19bf6e62f2S猫头猫 const setPageStatus = useSetAtom(pageStatusAtom); 20bf6e62f2S猫头猫 const textColor = useTextColor(); 21*ec26b768S猫头猫 const colors = useColors(); 22bf6e62f2S猫头猫 23bf6e62f2S猫头猫 const onSearchSubmit = async () => { 24bf6e62f2S猫头猫 if (query === '') { 25bf6e62f2S猫头猫 return; 26bf6e62f2S猫头猫 } 27bf6e62f2S猫头猫 setPageStatus(prev => 28bf6e62f2S猫头猫 prev === PageStatus.EDITING ? PageStatus.SEARCHING : prev, 29bf6e62f2S猫头猫 ); 30bf6e62f2S猫头猫 await search(query, 'all'); 31bf6e62f2S猫头猫 await addHistory(query); 32bf6e62f2S猫头猫 }; 33bf6e62f2S猫头猫 34bf6e62f2S猫头猫 return ( 35bf6e62f2S猫头猫 <Appbar style={[style.appbar, {backgroundColor: colors.primary}]}> 36bf6e62f2S猫头猫 <Appbar.BackAction 37bf6e62f2S猫头猫 onPress={() => { 38bf6e62f2S猫头猫 // !!这个组件有bug,输入法拉起的时候返回会默认打开panel 39bf6e62f2S猫头猫 Keyboard.dismiss(); 40bf6e62f2S猫头猫 navigation.goBack(); 41bf6e62f2S猫头猫 }}></Appbar.BackAction> 42bf6e62f2S猫头猫 <Searchbar 43bf6e62f2S猫头猫 autoFocus 44bf6e62f2S猫头猫 inputStyle={style.input} 45bf6e62f2S猫头猫 style={style.searchBar} 46bf6e62f2S猫头猫 onFocus={() => { 47bf6e62f2S猫头猫 setPageStatus(PageStatus.EDITING); 48bf6e62f2S猫头猫 }} 49bf6e62f2S猫头猫 placeholder="输入要搜索的歌曲" 50bf6e62f2S猫头猫 onSubmitEditing={onSearchSubmit} 51bf6e62f2S猫头猫 onChangeText={_ => setQuery(_)} 52bf6e62f2S猫头猫 value={query}></Searchbar> 53bf6e62f2S猫头猫 <Button color={textColor} onPress={onSearchSubmit}> 54bf6e62f2S猫头猫 搜索 55bf6e62f2S猫头猫 </Button> 56bf6e62f2S猫头猫 </Appbar> 57bf6e62f2S猫头猫 ); 58bf6e62f2S猫头猫} 59bf6e62f2S猫头猫 60bf6e62f2S猫头猫const style = StyleSheet.create({ 61bf6e62f2S猫头猫 appbar: { 62bf6e62f2S猫头猫 shadowColor: 'transparent', 63bf6e62f2S猫头猫 }, 64bf6e62f2S猫头猫 searchBar: { 65bf6e62f2S猫头猫 minWidth: rpx(375), 66bf6e62f2S猫头猫 flex: 1, 67bf6e62f2S猫头猫 borderRadius: rpx(64), 68bf6e62f2S猫头猫 height: rpx(64), 69*ec26b768S猫头猫 color: '#666666', 70bf6e62f2S猫头猫 }, 71bf6e62f2S猫头猫 input: { 72bf6e62f2S猫头猫 padding: 0, 73bf6e62f2S猫头猫 color: '#666666', 74bf6e62f2S猫头猫 height: rpx(64), 75*ec26b768S猫头猫 fontSize: fontSizeConst.subTitle, 76bf6e62f2S猫头猫 textAlignVertical: 'center', 77bf6e62f2S猫头猫 includeFontPadding: false, 78*ec26b768S猫头猫 }, 79bf6e62f2S猫头猫}); 80