【问题标题】:FLUTTER JUST_AUDIO Navigator.Push not working when finished playFLUTTER JUST_AUDIO Navigator.Push 在完成播放后不起作用
【发布时间】:2023-03-09 14:21:01
【问题描述】:

我正在使用包 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 现在应该弹出

但不适用于: 打印到这里。

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

【问题讨论】:

    标签: flutter dart flutter-dependencies


    【解决方案1】:

    你不能同时调用 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();
          },
        ),
      );
    }
    

    【讨论】:

    • 谢谢,它使它更清楚。但我确实需要弹出。付款完成后我不想返回这个画面,而是返回之前的画面。
    • 你可以从这里推入那个屏幕
    猜你喜欢
    • 2022-12-15
    • 2020-07-21
    • 2021-12-15
    • 2018-12-31
    • 2012-04-02
    • 2011-07-08
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    相关资源
    最近更新 更多