【问题标题】:Multiple WillPopScope?多个 WillPopScope?
【发布时间】:2020-03-29 16:15:54
【问题描述】:

这是我的应用程序的场景: 初始屏幕 -> 登录屏幕 -> 主屏幕强>

我的登录屏幕主屏幕中有WillPopScope

如果用户已经成功登录,我使用:

Navigator.push(
          context, MaterialPageRoute(builder: (context) => HomeScreen()));

我遇到的问题是,我现在在我的 主屏幕 中,但是当我尝试按手机的后退按钮时,我的 登录屏幕WillPopScope strong> 被触发而不是 主屏幕

我是 Flutter 的新手,我对这个简单的逻辑感到困惑。请帮忙。

【问题讨论】:

    标签: flutter dart flutter-layout flutter-test


    【解决方案1】:

    当您在 登录屏幕 中时,您需要从堆栈中弹出登录屏幕并将主屏幕推入其中。你可以这样做:

    Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => HomeScreen()))
    

    【讨论】:

    • 感谢您的回复,但它不起作用 =(。我也试过 Navigator.pushAndRemoveUntil( context, MaterialPageRoute( builder: (BuildContext context) => HomeScreen(), ), (_) => false); 也不起作用。
    • 无法正确使用 WillPopScope。我应该返回 false 以覆盖后退按钮的默认功能。谢谢!
    【解决方案2】:

    在登录屏幕中,在调用主屏幕之前添加Navigator.pop(context)

    Navigator.pop(context);
    Navigator.push(context, MaterialPageRoute(builder: (context) => HomeScreen()));
    

    【讨论】:

      猜你喜欢
      • 2023-01-14
      • 2022-08-22
      • 2022-10-17
      • 2020-10-29
      • 2021-07-14
      • 2021-10-03
      • 2021-05-01
      • 2020-10-07
      • 2021-03-22
      相关资源
      最近更新 更多