gpt4 book ai didi

flutter - 命名路由如何在 flutter web 中具有 URL 参数?

转载 作者:行者123 更新时间:2023-12-03 02:38:43 31 4
gpt4 key购买 nike

我正在构建一个网络应用程序,它需要一个获取帖子 ID 的路由,然后它将使用该 ID 获取帖子。

我怎么能有 URL 参数让我们说 /post/:id所以 id 是参数

我的应用目前看起来像这样:

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
// title: "Paste",
initialRoute: "/",
theme: ThemeData(
primarySwatch: Colors.green,
primaryColor: Colors.blue
),
routes: {
"/": (context) => HomePage(),
"/post": (context) => PastieRoute()
},
debugShowCheckedModeBanner: false
);
}
}

编辑:
这是我根据@BloodLoss 尝试过的方法,出于某种原因,在访问 localhost:8080/post?id=123 时,我在控制台上没有得到任何信息。

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: "/",
routes: {
"/": (context) => HomePage(),
"/post": (context) => PastieRoute()
},
onGenerateRoute: (settings) {
if (settings.name == "/post") {
print(settings.arguments); // Doesn't fire :(

return MaterialPageRoute(
builder: (context) {
// TODO
}
);
}
},
debugShowCheckedModeBanner: false
);
}
}

最佳答案

tl;博士

//in your example: settings.name = "/post?id=123"
final settingsUri = Uri.parse(settings.name);
//settingsUri.queryParameters is a map of all the query keys and values
final postID = settingsUri.queryParameters['id'];
print(postID); //will print "123"

向下钻取

在完美的世界中,您可以访问 queryParametersUri.base.queryParameters因为:

Uri.base

Returns the natural base URI for the current platform. When running in a browser this is the current URL of the current page (from window.location.href). When not running in a browser this is the file URI referencing the current working directory.



但是目前在 flutter 中存在一个问题,您有 #/在您的路径中弄乱了 Uri.base乌里的解释。
关注 issue #33245在此问题得到解决之前,您将能够使用 Uri.base.queryParameters

关于flutter - 命名路由如何在 flutter web 中具有 URL 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57552885/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com