'I Need To Make Search In This Application

thats all i want so please help me thx its flutter code using dart i want to search and play the song please help me to do that i just want help to do that to can upload the app on app store thanks just me app and this the link on github https://github.com/montasermohamed101/Music_flutter

class MusicScreen extends StatefulWidget {
        
          @override
          _MusicScreenState createState() => _MusicScreenState();
        }
        
        class _MusicScreenState extends State<MusicScreen> {
        
          final AssetsAudioPlayer audioPlayer = AssetsAudioPlayer();
        
          double screenHeight = 0;
          double screenWidth = 0;
        
          List<Audio> audioList = [
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter')),
            Audio('assets/beautiful.mp3',metas: Metas(title: 'Beautiful')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter3')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter2')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter3')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter2')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter3')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter2')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter3')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter2')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter3')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter2')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter3')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter2')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter3')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter2')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter3')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter2')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter3')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter2')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter3')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter2')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter3')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter2')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter3')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter2')),
            Audio('assets/letter.mp3',metas: Metas(title: 'Letter3')),
          ];
        
        
          @override
          void initState() {
            super.initState();
            setupPlaylist();
          }
        
          void setupPlaylist()async
          {
            await audioPlayer.open(Playlist(audios: audioList),
              showNotification: true,autoStart: false
            );
          }
        
          @override
          void dispose() {
            super.dispose();
            audioPlayer.dispose();
          }
        
          Widget playlist(RealtimePlayingInfos realtimePlayingInfos)
          // this widget is the ListView widget
          {
            return Container(
              // this is the container that Control the listView
              height: screenHeight * 0.7,
              decoration: BoxDecoration(
                image: DecorationImage(image: AssetImage('assets/y.jpg'),fit: BoxFit.cover),
              ),
              alignment: Alignment.bottomLeft,
              child: ListView.builder(
                itemBuilder: (context,index)
                {
                  return playlistItem(index);
                }, shrinkWrap: true,
                itemCount: audioList.length,
              ),
            );
          }
        
          Widget playlistItem(int index)
          {
            // this Widget to show the song name and title and number in the container
            return InkWell(
              onTap: () => audioPlayer.playlistPlayAtIndex(index),
              splashColor: Colors.transparent,
              highlightColor: Colors.yellow,
              child: Container(
                height: screenHeight * 0.1,
                child: Padding(padding: const EdgeInsets.only(
                  left: 20,right: 20,
                ),child: Row(
                  children: [
                    Text('${index + 1}',style: TextStyle(
                      color: Colors.white,
                      fontWeight: FontWeight.bold,
                    ),),
                    SizedBox(width: screenWidth * 0.04,),
                    Expanded(child:
                    Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Text(audioList[index].metas.title,
                          style: TextStyle(
                            fontSize: 15,
                            color: Colors.white,
                            fontWeight: FontWeight.bold,
                          ),),
                        SizedBox(height: screenHeight * 0.005,),
        
                      ],
                    )
                    ),
                    Icon(Icons.ac_unit,color: Colors.white,),
                  ],
                ),
                ),
              ),
            );
          }
        
          Widget bottom(RealtimePlayingInfos realtimePlayingInfos)
          {
            return Container(
              height: screenHeight * 0.2,
              color: Colors.white,
              child: Container(
              //  height: screenHeight  * 0.1,
                color: Colors.green,
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.center,
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    Text('${audioPlayer.getCurrentAudioTitle}'
                      ,style: TextStyle(
                          color: Colors.white,
                          fontWeight: FontWeight.w900,
                          fontSize: 18
                      ),),
                    Row(
                      mainAxisAlignment: MainAxisAlignment.center,
                      crossAxisAlignment: CrossAxisAlignment.center,
                      children: [
                        getTimeText(realtimePlayingInfos.currentPosition),
                        slider(realtimePlayingInfos.currentPosition,
                            realtimePlayingInfos.duration),
                        getTimeText(realtimePlayingInfos.duration),
        
                      ],
                    ),
                    Row(
                      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                      children: [
                        IconButton(
                            onPressed: () => audioPlayer.previous(),
                            iconSize: 50,
                            icon: Icon(Icons.skip_previous_rounded)),
                        IconButton(
                            onPressed: () => audioPlayer.playOrPause(),
                            iconSize: 50,
                            icon: Icon(realtimePlayingInfos.isPlaying? Icons.pause_circle_filled_rounded : Icons.play_circle_outline_rounded)),
                        IconButton(
                            onPressed: () => audioPlayer.next(),
                            iconSize: 50,
                            icon: Icon(Icons.skip_next_rounded)),
                      ],
                    ),
                  ],
                ),
              ),
            );
          }
        
        
          @override
          Widget build(BuildContext context) {
            screenHeight = MediaQuery.of(context).size.height;
            screenWidth = MediaQuery.of(context).size.width;
            return Scaffold(
              appBar: AppBar(
                backgroundColor: Colors.green,
              ),
              backgroundColor: Colors.blue,
              body: audioPlayer.builderRealtimePlayingInfos(builder: (context,realtimePlayingInfos)
              {
                return  Container(
                  child: SingleChildScrollView(
                    child: Column(
                      children: [
                        Column(
                          children: [
                            playlist(realtimePlayingInfos),
                            bottom(realtimePlayingInfos),
                          ],
                        ),
        
        
                      ],
                    ),
                  ),
                );
              }),
        
        
            );
          }
          Widget slider(Duration currentPosition,Duration duration) {
            return Stack(
              children: [
                Container(
                  height: screenHeight * 0.01,
                ),
                SliderTheme(
                    data: SliderThemeData(
                        thumbColor: Colors.white,
                        activeTrackColor: Color(0xff10d541),
                        inactiveTrackColor: Colors.grey[800],
                        overlayColor: Colors.transparent),
                    child: Slider.adaptive(
                        value:
                        currentPosition.inSeconds.toDouble(),
                        max: duration.inSeconds.toDouble() + 3,
                        min: -3,
                        onChanged: (value) {
                          if (value <= 0) {
                            audioPlayer.seek(Duration(seconds: 0));
                          }else {
                            audioPlayer.seek(Duration(seconds: value.toInt()));
                          }
                        })),
              ],
            );
          }
        
          Widget getTimeText(Duration seconds)
          {
            return Text(transformString(seconds.inSeconds),
              style: TextStyle(
                color: Colors.white,
              ),);
          }
        
          String transformString(int seconds) {
            String minuteString =
                '${(seconds / 60).floor() < 10 ? 0 : ''}${(seconds / 60).floor()}';
        
            String secondString = '${seconds % 60 < 10 ? 0 : ''}${seconds% 60}';
            return '$minuteString:$secondString'; // Returns a string with the format mm:ss
          }
        
        
        
        
        
        
        }

how to make search bar to can search about any song



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source