gpt4 book ai didi

flutter - 如何在 Flutter Web 中处理浏览器的后退按钮

转载 作者:行者123 更新时间:2023-12-05 08:11:02 32 4
gpt4 key购买 nike

此问题已在此链接中提出How to configure go back button in Browser for Flutter Web App并且我实现了 onWillPop,所以当用户在 A 屏幕中然后单击按钮 See Detail 我会将它们导航到 B 屏幕然后..当用户在 B 屏幕中并单击浏览器的后退按钮我会将它们导航回 A 屏幕...第一次尝试成功,但当我第二次尝试时,出现这样的错误

Error: Assertion failed: org-dartlang-sdk:///flutter_web_sdk/lib/_engine/engine/navigation/history.dart:288:14
_userProvidedRouteName != null
is not true

在我的第一个屏幕(A 屏幕)中,我有一个这样的按钮:

FlatButton(
onPressed: () {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (BuildContext ctx) =>
Detail(
value:x[i])));
},
child: Text("See Detail"),
textColor: Colors.white,
color: Colors.blueAccent,
)

对于详细信息屏幕(B 屏幕),我像这样使用 onWillPop

WillPopScope(
onWillPop: () {
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (BuildContext ctx) => FirstScreen()));
return Future.value(true);
},
child: Scaffold(
key: _globalKey,
....

还有什么我应该补充的吗?

最佳答案

在屏幕 BonWillPop 中调用 Navigator.pop(context);

确保当您从屏幕 A 导航到屏幕 B 时,您不应使用 Navigator.pushReplacement,因为它会从 < strong>屏幕堆栈(不确定这是不是正确的术语)

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

这里以flutter为例。

https://flutter.dev/docs/cookbook/navigation/navigation-basics

关于flutter - 如何在 Flutter Web 中处理浏览器的后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65472395/

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