如何使用Flutter Web应用程序启动Web URL并提取其ID

6uxekuva  于 2023-06-30  发布在  Flutter
关注(0)|答案(1)|浏览(153)

在我的web应用程序中考虑http://example。我的主机url是ae。
我给予每个商店一个QR码,当他们扫描它时,他们会看到类似http://example.ae/a23bc的东西,其中包括商店的唯一标识符。
当有人扫描并启动Web应用程序时,他们会收到404错误,因为找不到路由。
我需要在用户登录时从地址url中提取用户的id,我只想启动基本url,而忽略用户的id。我想使用API生成和表示数据,所以id只是用于提取和使用它。
任何人都知道在Flutter Web中实现此目的的最佳方法
lauch the base url http”//exapmle.ae ignoring the id and i want to保存the id in my for further functioning

jc3wubiy

jc3wubiy1#

你应该这样设定路线

http://example.ae/home?uniqueId=yourUniqueId

您还应该使用

onGenerateRoute: generateRoute,

为了从访问过的网页中解析queryParameters,就像这样

Route<dynamic> generateRoute(RouteSettings settings) {
RoutingData routingData = settings.name!.getRoutingData;

 switch (routingData.route) {
  case AppRoutes.homeRoute:
   return _getPageRoute(
      HomeView(
        homeController: sl(),
      ),
      settings);
  case AppRoutes.blog:
    return _getPageRoute(const ViewBlogs(), settings);
  case AppRoutes.blogPost:
    log("Going Blog Post ${routingData.route} post id 
     ${routingData['id']}");
      return _getPageRoute(
       BlogDetailPage(
         postId: routingData['id'],
       ),
       settings);

这是路由数据类

class RoutingData {
 final String route;
 final Map<String, String> _queryParameters;

 RoutingData({
  required this.route,
  required Map<String, String> queryParameters,
 }) : _queryParameters = queryParameters;

 operator [](String key) => _queryParameters[key];
 }

使用www.example.com的String类的扩展settings.name您可以获得RoutingData

extension StringExtension on String {
  RoutingData get getRoutingData {
    var uriData = Uri.parse(this);
    //  print('queryParameters: ${uriData.queryParameters} path: 
    ${uriData.path}');
     return RoutingData(
      queryParameters: uriData.queryParameters,
      route: uriData.path,
     );
   }
  }

相关问题