2

我部署了一个颤振的网络应用程序,但是当用户浏览到不同的屏幕时,浏览器栏中的路径永远不会更新。

你可以在这里体验一下:https ://owleyes.codemagic.app/#/

我正在使用以下方法导航:

                    Navigator.push(
                      context,
                      MaterialPageRoute(builder: (context) => AboutPage()),
                    );

https://github.com/owleyesdev/owleyes/blob/master/lib/pages/home_page.dart#L24

4

1 回答 1

1

为此,您需要使用命名路由。使用命名路由会在你导航到新路由时为颤振提供一个特定的字符串。使用命名路由的方法在这里有很好的记录,但我将包括需要做什么的基础知识。

MaterialApp您的小部件树的顶部已经有一个。您只需要在此处使用routes命名参数定义您可能需要的路由,该参数接受类型Map<String, WidgetBuilder>,其StringString是附加到 URL 之后的/#/.

return MaterialApp(
  debugShowCheckedModeBanner: false,
  theme: ThemeData(
    brightness: Brightness.dark,
    primaryColorDark: Colors.black,
    fontFamily: "GoogleSansRegular",
  ),
  routes: {
    '/': (context) => HomePage(),
    '/aboutPage': (context) => AboutPage(),
  }
);

我建议只将String键定义为每个小部件的静态变量。通过这种方式,它们可以像 一样被访问HomePage.route,这有助于下一次必要的修改。

Navigator.push现在,您应该使用来代替 just ,Navigator.pushNamed它执行相同的操作,只是接受String路由作为参数。

使用示例:

Navigator.pushNamed(context, '/aboutPage');

使用它最终会得到一个https://owleyes.codemagic.app/#/aboutPage.

于 2020-07-22T00:41:35.627 回答