0

如何防止用户返回上一页。

例如我有page 1, page 2, submission successful

我注意到即使我不包含后退按钮并且用户尝试使用设备后退按钮/手势,前一个屏幕也会显示给用户。

我如何使当用户尝试使用他的设备后退按钮或滑动手势时,他被发送到屏幕page 1而不是page 2

4

3 回答 3

0

要禁用后退按钮,您可以使用 WillPopScope 包装您的小部件。

@override 
Widget build(BuildContext context) { 
  return WillPopScope( 
    onWillPop: () async => false,
    child: .....
  ); 
}

对于滑动动画,您可以使用GesturedDetector包装小部件并切换选项卡。

GestureDetector( 
  onHorizontalDragEnd: (DragEndDetails details) => _onHorizontalDrag(details), 
  child: Container(),
 )

另一种选择是PageView。PageView.builder 实现的示例是:

PageView.builder(
  itemBuilder: (context, position) { 
    return _buildPage();
  },
  itemCount: listItemCount, 
)
于 2019-08-15T20:25:02.143 回答
0

您可以使用 WillPopScope 小部件

 Widget build(BuildContext context) {

    return WillPopScope(
        onWillPop: () => Future.value(false); 
        child: // The rest of your code here
 )}

这将阻止它使用 android 后退按钮导航回来。

于 2019-08-15T20:27:29.650 回答
0

一种方法是调用pushReplacementyourNavigator而不是push. 这样,您就可以从堆栈中删除旧路由,并用新路由替换它。

于 2019-08-15T20:32:46.583 回答