首页 > 解决方案 > FLUTTER JUST_AUDIO Navigator.Push 播放完成后不起作用

问题描述

我正在使用包 Just_Audio。它一直运行良好,但是现在我希望当它完成播放时,如果用户还没有支付支付屏幕应该打开。

这是代码:

void closeScreen() {


final _userHasPaid =
    Provider.of<User>(context, listen: false).user.testPaid;
print("USER PAID = ${_userHasPaid}");
if (_userHasPaid == false && widget.breathwork.breathType == "F") {
  print("got here");
  Navigator.push(
    context,
    MaterialPageRoute(
      builder: (context) {
        print(" and got here");
        return PaymentsScreen();
      },
    ),
  );
}

disposeAudio();
print("should pop now");
Navigator.pop(context);

}

在我介绍 Navigator.push 之前,一切正常,并使用 Navigator.pop 关闭屏幕。但是,一旦我添加了推送代码,我就没有得到 PaymentsScreen 并且最后的 Navigator.pop 也不再工作。

我确实看到打印到控制台: print USER PAID print got here print should pop now

但不是为了:打印到这里。

任何帮助将不胜感激,谢谢

标签: flutterdartflutter-dependencies

解决方案


你不能同时调用 Navigator.push 和 pop 函数,你必须去支付页面然后你必须在支付完成后从那里弹出,并添加 disposeAudio(); 推送到支付页面前的功能

void closeScreen() {

disposeAudio();

final _userHasPaid =
    Provider.of<User>(context, listen: false).user.testPaid;
print("USER PAID = ${_userHasPaid}");
if (_userHasPaid == false && widget.breathwork.breathType == "F") {
  print("got here");
  Navigator.push(
    context,
    MaterialPageRoute(
      builder: (context) {
        print(" and got here");
        return PaymentsScreen();
      },
    ),
  );
}

推荐阅读