всплывайте с новыми аргументами в трепете .?

#android #flutter #dart

Вопрос:

Я создаю музыкальный плеер, который переходит в поле песни со страницы музыкального проигрывателя.. Когда я выбираю песню в поле песни, она открывается на страницу музыкального проигрывателя с новыми аргументами (информация о выбранной песне).

страница музыкального проигрывателя(небольшая часть)

 
class MusicPlayer extends StatefulWidget {
  SongInfo songInfo;
  String song2;
  bool fromhome;
  FlutterAudioQuery a = FlutterAudioQuery();
  //Function changeTrack;
  final GlobalKey<MusicPlayerState> key;
  MusicPlayer({this.songInfo, this.song2, this.fromhome, this.key})
      : super(key: key);
  MusicPlayerState createState() => MusicPlayerState();
}

class MusicPlayerState extends State<MusicPlayer> {
  double minimumValue = 0.0, maximumValue = 0.0, currentValue = 0.0;
  String currentTime = '', endTime = '';
  bool isPlaying = false;
  bool isPlaying2 = false;
  bool isStopped = true;
  final AudioPlayer player = AudioPlayer();
  final AudioPlayer player2 = AudioPlayer();
  //noise_cancelling noise = noise_cancelling();
  String song_path = '';
  String output_path = '';
  void initiatingstate() async {}

  void initState() {
    super.initState();
    if (!widget.fromhome) {
      //initiatingstate();
      setSong1(widget.songInfo);
      player.stop();
      player2.stop();
      song_path = widget.songInfo.filePath;
      output_path = widget.song2;
      // noise.denoise(song_path, output_path);
      setSong2(widget.songInfo, output_path);
    }
    if (widget.fromhome) {}
  }


 

Вот как я попытался задать параметры для перехода на нужную страницу музыкального проигрывателя в поле трек песни

Примечание:- страница музыкального проигрывателя всегда находится в одном шаге от страницы поля songtrack.

 
 Navigator.of(context).push(MaterialPageRoute(
                              builder: (context) => MusicPlayer(
                                  //changeTrack: changeTrack,
                                  songInfo: songs[currentIndex],
                                  song2: "$output_path.wav",
                                  fromhome: false,
                                  key: key)));
 

Я знаю, что нехорошо нажимать на новую страницу каждый раз, когда звонит новая песня.
Поэтому я попробовал зайти с какой-нибудь ссылкой.

 
 Navigator.of(context).pop(
     [songs[currentIndex], "$output_path.wav", false, key]);
 

Но не сработало ): .

Знаете ли вы, как перейти на страницу музыкального проигрывателя с новыми параметрами, которые начинаются с новой песни..? заранее спасибо..

Комментарии:

1. Взгляните на унаследованный виджет или поставщика. TLDR Инкапсулирует поля в объект и вводит его в дерево виджетов через контекст