从 TabBar 选择更新 URL

Luc*_*cas 7 flutter flutter-navigation flutter-web

我目前正在更新 Flutter Web 应用程序以支持通过 URL 共享页面。我目前有一个使用 的屏幕TabBar,并根据所选选项卡显示不同的视图。我希望能够做两件事:

  • 选择选项卡时更新 URL(例如附加&section=tabName到 URL)
  • 将 URL 粘贴到新的浏览器选项卡中,并在 URL 指定的选项卡上打开应用程序

第二部分非常简单,只需接受&section=...参数并使用它来设置选项initialIndex卡控制器。然而更新 URL 似乎相当困难。

我尝试使用RouteInformationParser从参数列表生成新路由,但这会触发回调onGenerateRoute,并且似乎只是重新导航到具有initialIndex从新 URL 更新的页面。TabBarView我可以通过用导航到所选选项卡内容的嵌套导航器替换 来解决这个问题,但如果您想导航到比所选选项卡更深的位置,这似乎很快就会变得相当笨重。

我见过提到的一个更简单的选项是window.history.replaceState,它看起来简单得多,但感觉有点混乱。有没有我错过的方法可以做到这一点?

谢谢!

小智 1

这有点 hacky,但我能够通过使用 TabBar.onTap(提供选项卡索引)强制更改选项卡式导航的 URL,并通过它进行导航。它破坏了漂亮的滑动操作,但我在地址栏中获得了自定义 URL,这对我的使用更重要。