Используйте Navigator.pu sh (MaterialPageRoute) в методе класса - PullRequest
0 голосов
/ 20 апреля 2020

Я создаю приложение, используя Flutter для воспроизведения музыки c.

Я создал класс MusicService со всеми функциями musi c, реализованными в таких методах, как playMusi c, seekMusi c, onAudioComplete и т. Д.

У меня есть TrackScreen, который построен на основе трека (с фоном трека, описанием и т. д.). В методе init экрана я вызываю MusicService для воспроизведения на экране musi c. Пока все хорошо.

Что я хотел бы сделать, это создать новый экран, когда трек будет завершен. Этот экран должен основываться на следующей дорожке в списке воспроизведения. Решение, которое я предложил, - вызвать Navigator.Pu sh в методе onAudioComplete класса MusicService. Проблема в том, что Navigator.Pu sh требуется контекст, и я не знаю, как указать его для ссылки на контекст, в котором он вызывается, то есть на контекст TrackScreen.

У вас есть идеи для решения? Эта проблема? Я что-то неправильно понимаю?

Спасибо за помощь

1 Ответ

1 голос
/ 20 апреля 2020

Вы можете перемещаться без context, используя navigatorKey вашего MaterialApp

. Сначала вы должны объявить GlobalKey

final GlobalKey<NavigatorState> navKey = GlobalKey<NavigatorState>();

и использовать его в своем MaterialApp. widget

child: MaterialApp(
  navigatorKey: navKey,
  ...

После того, как вы сможете получить его на pu sh новые экраны

navKey.currentState.push(...)
...