Migration guide for `RouteInformation.location`
Summary
#RouteInformation.location
and related APIs were deprecated in the favor of RouteInformation.uri
.
Context
#The RouteInformation
needs the authority information to handle mobile deeplinks from different web domains. The uri
field was added to RouteInformation
that captures the entire deeplink information and route-related parameters were converted to the full Uri
format. This led to deprecation of incompatible APIs.
Description of change
#- The
RouteInformation.location
was replaced byRouteInformation.uri
. - The
WidgetBindingObserver.didPushRoute
was deprecated. - The
location
parameter ofSystemNavigator.routeInformationUpdated
was replaced by the newly addeduri
parameter.
Migration guide
#Code before migration:
const RouteInformation myRoute = RouteInformation(location: '/myroute');
Code after migration:
final RouteInformation myRoute = RouteInformation(uri: Uri.parse('/myroute'));
Code before migration:
final String myPath = myRoute.location;
Code after migration:
final String myPath = myRoute.uri.path;
Code before migration:
class MyObserverState extends State<MyWidget> with WidgetsBindingObserver {
@override
Future<bool> didPushRoute(String route) => _handleRoute(route);
}
Code after migration:
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(),
)
);
}
Code before migration:
SystemNavigator.routeInformationUpdated(location: '/myLocation');
Code after migration:
SystemNavigator.routeInformationUpdated(uri: Uri.parse('/myLocation'));
Timeline
#Landed in version: 3.10.0-13.0.pre
In stable release: 3.13.0
References
#Relevant PRs:
- PR 119968: Implement url support for RouteInformation and didPushRouteInformation.
Unless stated otherwise, the documentation on this site reflects the latest stable version of Flutter. Page last updated on 2024-04-04. View source or report an issue.