Flutter中go_router的extra参数是否支持Deep Linking?
go_router extra参数与Deep Linking兼容性说明
截至go_router的最新稳定版本(v12及以上),extra参数仍然无法配合Deep Linking工作,这个限制并没有被修改。
原因在于extra的设计定位:它是用于内存内页面跳转时传递非序列化的临时数据(比如自定义对象、未持久化的状态),不会被序列化到URL中。而Deep Linking完全依赖URL的路径、查询参数来传递信息,无法从URL中恢复extra里的内容——无论是从外部打开Deep Link,还是应用内通过Deep Link跳转,extra都会是空值。
如果需要配合Deep Linking传递数据,必须将数据编码到URL的路径参数或查询参数中:
- 使用路径参数:
GoRouter.of(context).go('/product/123'); - 使用查询参数:
GoRouter.of(context).go('/product?id=123&category=electronics');
如果要传递复杂对象,需要自行实现序列化逻辑(比如转成JSON字符串),将其放到查询参数中,再在目标页面解析还原。
内容的提问来源于stack exchange,提问作者Cyrille Dakhlia
相关产品推荐
相关产品推荐

