页面url在flutter中没有变化,但是页面内容变化很好

Page url not changing in flutter, but the page content changes fine

您好,我正在尝试在 flutter web 中实现一个页面,该页面从 url 获取一个 id 并根据该 id 显示数据。它在页面获取数据的意义上起作用,但 url 本身在浏览器中没有改变。

我在路线部分放了这个

                      onGenerateRoute: (settings) {
                        List<String> routeSplit = settings.name.split('/');
                        if (routeSplit[1] == 'pdp' && routeSplit.length > 2) {
                          int pdpId = int.parse(routeSplit[2]);
                          return MaterialPageRoute(
                              builder: (context) =>
                                  ActivityDescriptionPage(id: pdpId));
                        }
                      },

页面由此获取 id。并从我使用的代码发送到页面:

onTap: () => Navigator.pushNamed(context, '/pdp/' + activityId.toString())

因此,当我从 /products 页面执行上述行时,新页面内容已加载,但浏览器中的 url 仅保留 /products。我是不是做错了什么?

我必须将设置对象传递给 Material 页面路由。 我在这里找到了它,那里也有一个例子。 https://github.com/flutter/flutter/issues/53361#issuecomment-607521191

只需将 settings: settings, 添加到 MaterialPageRoute

通过MaterialPageRoute中的设置。 像这样,

onGenerateRoute: (settings) {
  List<String> routeSplit = settings.name.split('/');
  if (routeSplit[1] == 'pdp' && routeSplit.length > 2) {
    int pdpId = int.parse(routeSplit[2]);
    return MaterialPageRoute(
      settings: settings,
      builder: (context) => ActivityDescriptionPage(id: pdpId)
    );
  }
},

它会改变页面内容和URL。