WillPopScope 我应该在 Navigator.pop 之后使用 return Future.value(true)

guy*_*guy 4 flutter

使用return Future.value(false);后才Navigator.pop(context)是正确的方法。

如果我使用 Navigator.pop(context, false) 它之后 return Future.value(true);

按后退按钮后应用程序将显示黑屏,并且Logcat中没有错误。

但是如果我在没有Navigator.pop(context)或没有的情况下使用相同的代码return Future.value(true);一切都会很好,使用return Future.value(false);也可以正常工作。

*按照有关 Udemy 的教程,该节目return Future.value(true)是可以的。

guy*_*guy 7

我找到了解决方案。你应该使用return Future.value(false);. 您使用Navigator.pop(context),手动导航,Future.value(true);触发另一个无法完成的弹出窗口,因为您已经存在该页面并且这会导致应用程序崩溃。

OnWillPop 期望返回,因此通过使用return Future.value(false);您告诉 onWillPop 您在此处处理页面的关闭。


Nif*_*zar 5

onWillPop: () {
    Navigator.pop(context, 'ANY RETURN VALUE');
    return new Future(() => false);
  },
Run Code Online (Sandbox Code Playgroud)