MaterialApp中initialRoute和home的区别

iDe*_*ode 7 dart flutter

为什么Flutter 中已经存在该initialRoute属性home

iDe*_*ode 14

更多的是关于代码可读性(但不限于),看看他们都在做同样的工作,但以不同的方式:

runApp(
  MaterialApp(
    home: HomePage(),
  ),
);
Run Code Online (Sandbox Code Playgroud)

或者

runApp(
  MaterialApp(
    initialRoute: '/',
    routes: {
      '/': (_) => HomePage(),
    },
  ),
);
Run Code Online (Sandbox Code Playgroud)

使用onGenerateInitialRoute/ 也onGenerateRoute允许您更改导航器动画。

runApp(
  MaterialApp(
    onGenerateInitialRoutes: (route) {
      return [
        MaterialPageRoute(builder: (_) => HomePage())
      ];
    }
  ),
);
Run Code Online (Sandbox Code Playgroud)

或者

runApp(
  MaterialApp(
    initialRoute: '/',
    onGenerateRoute: (settings) {
      if (settings.name == '/') return MaterialPageRoute(builder: (_) => HomePage());
      return MaterialPageRoute(builder: (_) => UnknownPage()); // you can do this in `onUnknownRoute` too
    },
  ),
);
Run Code Online (Sandbox Code Playgroud)


小智 6

Home-route 是应用程序的默认路由,而另一方面,初始路由是屏幕上呈现的第一个路由。两者看起来相同,但工作方式不同。home:应用程序的默认路线,如果没有给出初始路线,则在屏幕上呈现。初始:无论是否给出家乡路线,如果给出了初始路线,那么在应用程序启动时,初始路线将呈现在屏幕上,有两种行为或初始路线,

1.InitialRoute 将首先在屏幕上渲染,现在如果还给出了家乡路线,那么在这种情况下,当我们按后退按钮时,我们将返回家乡路线

  1. 如果没有给出家乡路线,那么我们可以说我们的初始路线也是我们的家乡路线。

如果我们谈论回家路线,也有两种情况,

  1. 如果给出了家乡路线以及初始路线,并且两者不同,那么在这种情况下,初始路线将首先在屏幕上呈现,当按下后退按钮时,我们将返回家乡路线
  2. 如果没有给出初始路由,那么家乡路由就是我们的家乡路由,也是初始路由(因为没有给出真正的初始路由,这意味着初始路由被设置为空)

让我们看下面的代码来理解,

 class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text("Home Route"),
        ),
      ),
      initialRoute: '/init',
      routes: <String, WidgetBuilder>{
        '/init': (BuildContext context) {
          return Scaffold(
            appBar: AppBar(
              title: const Text("Initial Route"),
            ),
          );
        }
      },
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

因为我们已经给出了初始路线以及家乡路线,所以当我们启动应用程序时,我们的应用程序将首先渲染初始路线,如下所示,如上所示,应用程序显示了我们在 MaterialApp 构造中定义的初始路线,现在让我们看看什么当我们按下后退按钮时会发生 在此输入图像描述

现在,当我们按下后退按钮时,它会带我们回到回家的路线

在此输入图像描述

现在要理解的是,如果我们提供了不同的主页和初始路线,那么初始路线将首先渲染并显示在屏幕上,如果用户按下后退按钮,那么在这种情况下,主页路线将呈现在屏幕上。

在哪里使用不同的初始路线和家乡路线?:有很多用例,我们可以使用不同的家乡路线和初始路线案例,大学可以向学生显示初始视图,学生可以使用该初始视图来申请特定时间的入学,而不是显示在主页上,餐厅可以通过显示初始路线来显示折扣优惠并注册用户,以防用户按下后退按钮,他们将返回到家庭路线,如上所示。