flutter runtime_error ai_generated true

导航错误:未找到深度链接路由:/user/profile?id=123

NavigationError: deep link route not found: /user/profile?id=123

ID: flutter/navigation-deep-link-not-found

其他格式: JSON · Markdown 中文 · English
85%修复率
85%置信度
1证据数
2024-04-12首次发现

版本兼容性

版本状态引入弃用备注
Flutter 3.16 active
go_router 12.0.0 active
Navigator 2.0 active

根因分析

深度链接URL与导航器路由表中任何已注册的路由不匹配,通常是由于缺少路由定义或路径格式不正确。

English

The deep link URL does not match any registered route in the Navigator's route table, often due to missing route definition or incorrect path format.

generic

解决方案

  1. Define the route in the router configuration. For go_router: GoRouter(routes: [GoRoute(path: '/user/profile/:id', builder: (context, state) => UserProfilePage(id: state.pathParameters['id']!))])
  2. If using Navigator 2.0, override the 'onGenerateRoute' method to parse the deep link and return a MaterialPageRoute. Example: onGenerateRoute: (settings) { if (settings.name == '/user/profile') { return MaterialPageRoute(builder: (_) => UserProfilePage(id: settings.arguments as String)); } return null; }
  3. Test the deep link with a custom URI scheme: 'myapp://user/profile/123'. Ensure the scheme is registered in Android/iOS and the router handles it.

无效尝试

常见但无效的做法:

  1. 85% 失败

    go_router and Navigator 2.0 require route patterns with parameter placeholders like '/user/profile/:id', not full URLs.

  2. 90% 失败

    Platform-level deep link setup alone is insufficient; the Flutter router must handle the path.

  3. 75% 失败

    Deep links often include a host (e.g., 'myapp.com/user/profile'), and the router must match the full path.