如何保留Flutter Web路由路径中的Url参数

问题描述 投票:0回答:2

我正在构建一个 flutter web 应用程序,它需要在开始时使用 url 参数。

目前它需要一个像

http://localhost:49844/?id=105897

这样的参数

但是应用程序捕获 URL 后,它会从网址栏中消失(如

http://localhost:49844/#/
),导致应用程序在刷新网站时失败。有没有办法让参数在Url路径中保留一次?

在我的代码中,我使用下面的代码从 Url 获取参数值

String appUrl = Uri.base.queryParameters["id"].toString();

此外,我使用

home:
而不是路线,因为我只显示一个页面。

flutter dart flutter-web url-parameters dart-html
2个回答
1
投票

我认为你需要尝试

initialRoute
onGenerateRoute
而不是
home

这只是示例代码,您可以查看docs以获得更精确的方法。还有这个答案

  MaterialApp(
    initialRoute: '/?id=105897',
    onGenerateRoute: (settings) {
      Uri uri = Uri.parse(settings.name);
      int id = int.parse(uri.queryParameters['id']);
      return const Home(id);
    },
  );

0
投票

添加

flutter_web_plugins
并在终端中执行
flutter pub get
命令。

// pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  flutter_web_plugins:
    sdk: flutter


  cupertino_icons: ^1.0.2
  timelines: ^0.1.0
  image: ^4.1.7
  touchable: ^1.0.2
  encrypt: ^5.0.1
  http: ^0.13.6
  ...

接下来,在

usePathUrlStrategy()
内拨打
main()

// main.dart

import 'package:flutter_web_plugins/flutter_web_plugins.dart';

void main() {
  usePathUrlStrategy();
  runApp(const MyApp());
}

重新启动项目。

© www.soinside.com 2019 - 2024. All rights reserved.