1import React from 'react'; 2import {StyleSheet} from 'react-native'; 3import rpx from '@/utils/rpx'; 4import {SafeAreaView} from 'react-native-safe-area-context'; 5import StatusBar from '@/components/base/statusBar'; 6import LocalMusicList from './localMusicList'; 7import MusicBar from '@/components/musicBar'; 8import ComplexAppBar from '@/components/base/ComplexAppBar'; 9import DocumentPicker from 'react-native-document-picker'; 10import Toast from '@/utils/toast'; 11import LocalMusicSheet from '@/core/localMusicSheet'; 12import {useNavigation} from '@react-navigation/native'; 13import {ROUTE_PATH} from '@/entry/router'; 14import {errorLog} from '@/utils/log'; 15 16export default function LocalMusic() { 17 const navigation = useNavigation<any>(); 18 19 return ( 20 <SafeAreaView style={style.wrapper}> 21 <StatusBar /> 22 <ComplexAppBar 23 title="本地音乐" 24 onSearchPress={() => { 25 navigation.navigate(ROUTE_PATH.SEARCH_MUSIC_LIST, { 26 musicList: LocalMusicSheet.getMusicList(), 27 }); 28 }} 29 menuOptions={[ 30 { 31 icon: 'magnify', 32 title: '从文件夹导入', 33 async onPress() { 34 try { 35 const dir = 36 await DocumentPicker.pickDirectory(); 37 if (dir?.uri) { 38 await LocalMusicSheet.importFolder(dir.uri); 39 Toast.success('导入成功'); 40 } 41 } catch (e: any) { 42 errorLog('导入歌曲失败', e?.message ?? ''); 43 Toast.warn('导入失败'); 44 } 45 }, 46 }, 47 ]} 48 /> 49 <LocalMusicList /> 50 <MusicBar /> 51 </SafeAreaView> 52 ); 53} 54 55const style = StyleSheet.create({ 56 wrapper: { 57 width: rpx(750), 58 flex: 1, 59 }, 60}); 61