Flutter 导航到主屏幕而不是上一个

Flutter navigate to main screen instead of previous

我刚开始使用 Flutter,我不会说它太棒了。不过,我遇到的一个“问题”是,当您按下后退键时,它将导航到上一个屏幕。我知道那是应该发生的事情,但我该如何改变呢?此外,appBar 按钮的作用相同,因此我也在寻找该按钮的“修复程序”。

如果您需要任何代码,请告诉我!祝你今天愉快,如有任何拼写错误,我们深表歉意!

您可以使用

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

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

首先,您需要在 MaterialApp:

中为您的路线设置名称
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      initialRoute: '/',
      routes: {
        '/': (context) => MyHomePage(),
        '/second': (context) => Page2(),
        '/third': (context) => Page3(),
      },
    );
  }
}

然后你需要用 WillPopScope 包裹第三页的 Scaffold (或你想从中导航回 HomePage 的任何其他页面)以更改什么当用户按下后退按钮时发生。最后您需要使用 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'),
          ),
        ),
      ),
    );
  }

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

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