gpt4 book ai didi

flutter - 在类方法中使用 Navigator.push (MaterialPageRoute)

转载 作者:行者123 更新时间:2023-12-03 04:51:04 25 4
gpt4 key购买 nike

我正在构建一个使用 Flutter 播放音乐的应用程序。

我创建了一个名为 MusicService 的类,其中所有音乐功能都在 playMusic、seekMusic、onAudioComplete 等方法中实现。

我有基于轨道构建的 TrackScreen(带有轨道背景、描述等)。在屏幕的 init 方法中,我调用了 MusicService 的一个实例来在屏幕上播放音乐。到现在为止还挺好。

我想做的是在轨道完成后构建一个新屏幕。此屏幕应基于播放列表中的下一首轨道。
我认为的解决方案是在 MusicService 类的 onAudioComplete 方法中调用 Navigator.Push。问题是 Navigator.Push 需要一个上下文,我不知道如何指定它来引用它被调用的上下文,即 TrackScreen 上下文。

你有解决这个问题的想法吗?我是不是误会了什么?

感谢您的帮助

最佳答案

您可以在没有 context 的情况下导航通过使用 navigatorKey您的MaterialApp
首先,您必须声明一个 GlobalKey

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

并在您的 MaterialApp 小部件中使用它
child: MaterialApp(
navigatorKey: navKey,
...

之后你就可以让它推送新的屏幕了
navKey.currentState.push(...)

关于flutter - 在类方法中使用 Navigator.push (MaterialPageRoute),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61331221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com