如何使用 onGenerateRoute 在 URL 中显示 Flutter Web 路由名称?
Posted
技术标签:
【中文标题】如何使用 onGenerateRoute 在 URL 中显示 Flutter Web 路由名称?【英文标题】:How to show Flutter Web route name in the URL with onGenerateRoute? 【发布时间】:2020-02-15 05:22:44 【问题描述】:我在 MaterialApp 上使用 onGenerateRoute 参数进行路由。
MaterialApp(
...
onGenerateRoute: Router.generateRoute,
...
)
然后使用pushNamed()
。
我想在 url 中显示我的路线名称,但我无法通过 onGenerateRoute 实现。
如果我在 MaterialApp 中使用routes:
,
像这样:
MaterialApp(
...
routes: sliverScreen: (context) => SliverScreen(),
...
)
它有效。但是如果我在 MaterialApp 上提供了 onGenerateRoute,我认为这是多余的。
【问题讨论】:
【参考方案1】:您可以将name
添加到生成的路由中,它会出现在URL中:
MaterialPageRoute(
builder: ... ,
settings: RouteSettings(name: 'SOMENAME'))
【讨论】:
当我使用网络构建器(flutter run -d chrome
或flutter build web
)时,我认为最好在“SOMENAME”前面加上一个斜杠。即:settings: RouteSettings(name: '/SOMENAME'))
使 url localhost:55525/#/SOMENAME 我不知道网络建设中的 # 是什么,但我没有质疑它。
@chongman 客户端路由模式有两种:hash
based 和 history api
based。第一个更健壮(但不那么美观)。我相信,在稳定的flutter for web
版本中,我们将能够选择其中之一。以上是关于如何使用 onGenerateRoute 在 URL 中显示 Flutter Web 路由名称?的主要内容,如果未能解决你的问题,请参考以下文章
在 onGenerateRoute 中使用 BlocProvider 注入存储库
使用带有 Flutter 后退按钮的 onGenerateRoute 时断言失败
Flutter Web-Proper 方式使用 onGenerateRoute 和 routes 作为 MaterialApp 的属性
如何在现有的 Hql 或 SQL 查询中应用“With UR”子句?如何在我的查询为字符串格式的 Java 文件中附加它