gpt4 book ai didi

dart - pushReplacement 显示后退箭头 flutter

转载 作者:IT王子 更新时间:2023-10-29 06:51:12 24 4
gpt4 key购买 nike

我有一个带有自定义底部导航栏的主屏幕,当单击一个图标时,它将当前索引设置为被单击的图标。但是当点击索引号 2 时,它会整页路由到另一个页面以添加“帖子”。提交帖子后,pushReplacement 会回到主屏幕(以防止返回)。但是在它路由到主屏幕到索引 0 处的默认屏幕后,后退按钮仍然显示在顶部。单击它后它消失了,但该屏幕上的数据略有不同。我该如何解决这个问题?

我主屏幕上的部分代码:

Widget customNav() {
return Container(
color: Colors.white,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[

//some icons before

IconButton(
icon: Icon(Icons.add_circle),
onPressed: () => Navigator.push(
context,
FadeRoute(
builder: (_) => BlocProvider<AppBloc>(
builder: (_, bloc) => bloc ?? AppBloc(),
onDispose: (_, bloc) => bloc.dispose(),
child: AddPost(userBloc: widget.userBloc)))),
),

//icons after

],
));
}

添加帖子页面:

_submitFunc() async {
// sending it to backend
if (everything is good) {
Navigator.pushReplacement(
context,
FadeRoute(
builder: (_) =>
BlocProvider<AppBloc>(
builder: (_, bloc) => bloc ?? AppBloc(),
onDispose: (_, bloc) => bloc.dispose(),
child: MainScreen(userBloc: widget.userBloc))),
);
}

最佳答案

看来这可能是路由问题。 Navigator.pushReplacement() 替换 route 那个点的任何内容,因此您实际上是在设置路线:

start: MainScreen
push: MainScreen -> AddScreen
pushReplacement: MainScreen (A) -> MainScreen (B)

这就是为什么后退按钮在您点击后消失的原因,它将您从 MainScreen B(具有要返回的历史上下文)带到 MainScreen A(没有)。

您可能希望使用 Navigator.pop() 返回到原始主屏幕而不是用新 View 替换当前 View ,或者使用

Navigator.pushAndRemoveUntil(newRoute, (route)=>false);

如果您想将用户转到新屏幕而根本无法返回,则清除所有 Navigator 路线历史记录。

关于dart - pushReplacement 显示后退箭头 flutter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54801746/

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