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 實作網址支援。
除非另有說明,否則本網站上的文件反映了 Flutter 的最新穩定版本。頁面最後更新於 2024-04-04。 檢視原始碼 或 回報問題。