页面网址没有变化,但页面内容变化良好

Posted

技术标签:

【中文标题】页面网址没有变化,但页面内容变化良好【英文标题】:Page url not changing in flutter, but the page content changes fine 【发布时间】:2020-10-08 01:00:37 【问题描述】:

您好,我正在尝试在 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。我在这里做错了吗?

【问题讨论】:

【参考方案1】:

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

【讨论】:

请提供源代码,而不仅仅是链接。 鼓励链接到外部资源,但请add context around the link,这样您的其他用户就会知道它是什么以及它存在的原因。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。 Answers that are little more than a link may be deleted 其他评论者:我没有标记这个答案【参考方案2】:

只需将settings: settings, 添加到MaterialPageRoute

【讨论】:

这是正确的,即使您不使用 Material,您也可以将 settings 传递给 PageRouteBuilder 是否可以在不使用 Navigator 的情况下更新有状态小部件内部的 url?【参考方案3】:

传递 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。

【讨论】:

以上是关于页面网址没有变化,但页面内容变化良好的主要内容,如果未能解决你的问题,请参考以下文章

我想抓取一个页面没有变化但每个表的页面中的数据每页都变化的网站

页面控制器发生了变化,但 Carousel 没有 SwiftUI

为啥vue的路由正常跳转,但页面没有变化

商品详情页面特殊制作,获取网页的高度,collectionView根据内容的变化其高度也随着变化

iframe如何自动随嵌入另一网站页面内容高度的变化页变化呢

iframe 高度随引用的页面内容自动变化