颤振导航到主屏幕,而不是上一个

时间:2020-08-02 14:41:31

标签: flutter flutter-navigation

我刚开始与Flutter合作,我不会撒谎。但是,我遇到的一个“问题”是,当您按返回键时,它将导航到上一个屏幕。我知道那应该发生,但是我该如何改变呢?另外,appBar按钮的作用相同,因此我也在寻找该按钮的“修复程序”。

如果您需要任何代码,请告诉我!祝您有美好的一天,对于拼写错误,我们深表歉意!

3 个答案:

答案 0 :(得分:2)

首先,您需要在MaterialApp中设置路线的名称:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      initialRoute: '/',
      routes: {
        '/': (context) => MyHomePage(),
        '/second': (context) => Page2(),
        '/third': (context) => Page3(),
      },
    );
  }
}

然后,您需要用Scaffold包装第三页(或您要从中导航回到HomePage的任何其他页面)的WillPopScope,以更改在用户按下后退按钮。最后,您需要使用popUntil导航回到HomePage

这是第三页build方法的代码:

@override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () {
        Navigator.of(context)
            .popUntil(ModalRoute.withName("/"));
        return Future.value(false);
      },
      child: Scaffold(
        body: Center(
          child: Container(
            child: Text('third page'),
          ),
        ),
      ),
    );
  }

答案 1 :(得分:0)

您可以使用

 Navigator.of(context).pushNamedAndRemoveUntil(
                    '/', (Route<dynamic> route) => false);

创建一个与主屏幕相对应的命名路由'/'并完成。 如有任何疑问,请随时询问

答案 2 :(得分:0)

如果在MaterialApp中指定“ home”属性,则无需创建任何路线。然后可以按以下步骤导航到主屏幕:

Navigator.of(context).popUntil(ModalRoute.withName('/'));