`RouteInformation.location` 迁移指南
摘要
#RouteInformation.location
和相关 API 已弃用,建议使用 RouteInformation.uri
。
上下文
#为了处理来自不同网页域名的移动端深度链接,RouteInformation
需要授权信息。uri
字段被添加到 RouteInformation
中,用于捕获完整的深度链接信息,并且与路由相关的参数被转换为完整的 Uri
格式。这导致了一些不兼容 API 的弃用。
更改说明
#RouteInformation.location
被RouteInformation.uri
替换。WidgetBindingObserver.didPushRoute
已被弃用。SystemNavigator.routeInformationUpdated
的location
参数被新添加的uri
参数替换。
迁移指南
#迁移前的代码
dart
const RouteInformation myRoute = RouteInformation(location: '/myroute');
迁移后的代码
dart
final RouteInformation myRoute = RouteInformation(uri: Uri.parse('/myroute'));
迁移前的代码
dart
final String myPath = myRoute.location;
迁移后的代码
dart
final String myPath = myRoute.uri.path;
迁移前的代码
dart
class MyObserverState extends State<MyWidget> with WidgetsBindingObserver {
@override
Future<bool> didPushRoute(String route) => _handleRoute(route);
}
迁移后的代码
dart
class MyObserverState extends State<MyWidget> with WidgetsBindingObserver {
@override
Future<bool> didPushRouteInformation(RouteInformation routeInformation) => _handleRoute(
Uri.decodeComponent(
Uri(
path: uri.path.isEmpty ? '/' : uri.path,
queryParameters: uri.queryParametersAll.isEmpty ? null : uri.queryParametersAll,
fragment: uri.fragment.isEmpty ? null : uri.fragment,
).toString(),
)
);
}
迁移前的代码
dart
SystemNavigator.routeInformationUpdated(location: '/myLocation');
迁移后的代码
dart
SystemNavigator.routeInformationUpdated(uri: Uri.parse('/myLocation'));
时间线
#包含于版本:3.10.0-13.0.pre
稳定版发布:3.13.0
参考
#相关 PR
- PR 119968: 为 RouteInformation 和 didPushRouteInformation 实现 url 支持。
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面最后更新于 2024-04-04。 查看源代码 或 报告问题.