Используйте Navigator.push (MaterialPageRoute) в методе класса
Я создаю приложение, использующее Flutter для воспроизведения музыки.
Я создал класс MusicService со всеми музыкальными функциями, реализованными в таких методах, как playMusic, seekMusic, onAudioComplete и так далее.
У меня есть TrackScreen, построенный на основе трека (с фоном трека, описанием и т. Д.). В методе инициализации экрана я вызываю функцию MusicService для воспроизведения музыки на экране. Все идет нормально.
Я хотел бы создать новый экран, когда трек будет завершен. Этот экран должен быть основан на следующем треке в списке воспроизведения. Решение, которое я думаю, - вызвать Navigator.Push в методе onAudioComplete класса MusicService. Проблема в том, что Navigator.Push требует контекста, и я не знаю, как его указать для ссылки на контекст, в котором он вызывается, то есть контекст TrackScreen.
Есть идея решить эту проблему? Я что-то не понимаю?
Спасибо вам за помощь
1 ответ
Вы можете перемещаться без context
используя navigatorKey
вашей MaterialApp
Во-первых, вы должны объявить GlobalKey
final GlobalKey<NavigatorState> navKey = GlobalKey<NavigatorState>();
и используйте его в своем виджете MaterialApp
child: MaterialApp(
navigatorKey: navKey,
...
После того, как вы сможете заставить его нажимать новые экраны
navKey.currentState.push(...)