1378a6099S猫头猫import React from 'react'; 2378a6099S猫头猫import {FlatListProps, StyleSheet, Text} from 'react-native'; 3378a6099S猫头猫import rpx from '@/utils/rpx'; 4378a6099S猫头猫import {useRoute} from '@react-navigation/native'; 5378a6099S猫头猫import MusicSheet from '@/common/musicSheetManager'; 6378a6099S猫头猫import MusicQueue from '@/common/musicQueue'; 7378a6099S猫头猫import usePanel from '@/components/panels/usePanel'; 8378a6099S猫头猫import {FlatList} from 'react-native-gesture-handler'; 9378a6099S猫头猫 10378a6099S猫头猫import ListItem from '@/components/base/listItem'; 11378a6099S猫头猫import IconButton from '@/components/base/iconButton'; 12378a6099S猫头猫import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; 13378a6099S猫头猫import DownloadManager from '@/common/downloadManager'; 14*3a76c6afS猫头猫import MusicItem from './musicItem'; 15378a6099S猫头猫 16378a6099S猫头猫interface IMusicListProps { 17378a6099S猫头猫 /** 顶部 */ 18378a6099S猫头猫 Header?: FlatListProps<IMusic.IMusicItem>['ListHeaderComponent']; 19378a6099S猫头猫 /** 音乐列表 */ 20378a6099S猫头猫 musicList?: IMusic.IMusicItem[]; 21378a6099S猫头猫 /** 所在歌单 */ 22378a6099S猫头猫 musicSheet?: IMusic.IMusicSheetItem; 23378a6099S猫头猫 /** 是否展示序号 */ 24378a6099S猫头猫 showIndex?: boolean; 259e24e067S猫头猫 /** 点击 */ 269e24e067S猫头猫 onItemPress?: (musicItem: IMusic.IMusicItem) => void; 27378a6099S猫头猫} 2845510a04S猫头猫const ITEM_HEIGHT = rpx(120); 29378a6099S猫头猫export default function MusicList(props: IMusicListProps) { 309e24e067S猫头猫 const {Header, musicList, musicSheet, showIndex, onItemPress} = props; 31378a6099S猫头猫 32378a6099S猫头猫 return ( 33378a6099S猫头猫 <FlatList 34378a6099S猫头猫 style={style.wrapper} 35378a6099S猫头猫 ListHeaderComponent={Header} 36378a6099S猫头猫 data={musicList ?? []} 37378a6099S猫头猫 keyExtractor={musicItem => `ml-${musicItem.id}${musicItem.platform}`} 3845510a04S猫头猫 getItemLayout={(_, index) => ({ 3945510a04S猫头猫 length: ITEM_HEIGHT, 4045510a04S猫头猫 offset: ITEM_HEIGHT * index, 4145510a04S猫头猫 index, 4245510a04S猫头猫 })} 43378a6099S猫头猫 renderItem={({index, item: musicItem}) => { 44378a6099S猫头猫 return ( 45*3a76c6afS猫头猫 <MusicItem 46*3a76c6afS猫头猫 musicItem={musicItem} 47*3a76c6afS猫头猫 index={showIndex ? index + 1 : undefined} 48*3a76c6afS猫头猫 onItemPress={() => { 499e24e067S猫头猫 if (onItemPress) { 509e24e067S猫头猫 onItemPress(musicItem); 519e24e067S猫头猫 } else { 529e24e067S猫头猫 MusicQueue.playWithReplaceQueue(musicItem, musicList ?? []); 53378a6099S猫头猫 } 549e24e067S猫头猫 }} 55*3a76c6afS猫头猫 musicSheet={musicSheet}></MusicItem> 56378a6099S猫头猫 ); 57378a6099S猫头猫 }}></FlatList> 58378a6099S猫头猫 ); 59378a6099S猫头猫} 60378a6099S猫头猫 61378a6099S猫头猫const style = StyleSheet.create({ 62378a6099S猫头猫 wrapper: { 63378a6099S猫头猫 width: rpx(750), 64378a6099S猫头猫 }, 65378a6099S猫头猫}); 66