Flutter 如何在flatter中获取服务器请求中的查询参数?

Flutter 如何在flatter中获取服务器请求中的查询参数?,flutter,dart-server,Flutter,Dart Server,为了在移动应用程序上使用Imgur进行身份验证,我决定在端口8585上生成一个http服务器,以完成oauth流。读取请求并写入响应,但我无法从url访问queryparameters 我已经尝试使用uri.queryparameters[“access_token”],但返回null 服务器生成如下所示: Future\u server()异步{ 最终StreamController onCode=新StreamController(); HttpServer服务器= 等待HttpServer

为了在移动应用程序上使用Imgur进行身份验证,我决定在端口8585上生成一个http服务器,以完成oauth流。读取请求并写入响应,但我无法从url访问queryparameters

我已经尝试使用uri.queryparameters[“access_token”],但返回null

服务器生成如下所示:

Future\u server()异步{
最终StreamController onCode=新StreamController();
HttpServer服务器=
等待HttpServer.bind(InternetAddress.loopbackIPv4,8585);
侦听((HttpRequest请求)异步{
打印(request.uri.hashCode);
最终字符串accessToken=request.uri.queryParameters[“访问令牌”];
请求.响应
..状态代码=200
..headers.set(“内容类型”,ContentType.html.mimeType)
…写下(“您现在可以关闭此窗口”);
等待request.response.close();
等待服务器关闭(强制:true);
onCode.add(accessToken);
等待onCode.close();
});
返回onCode.stream;
}
服务器获取的url类型如下:


有人能帮我吗?我已经在这上面呆了整整两天了

它返回null,因为查询参数的开头是
,但在这个链接中,查询参数前面有一个
#
,用
替换它确实解决了问题

解决方案1:

var uri=uri.parse('http://localhost:8585/callback#access_token=your_token_here&expires_in=315360000&token_type=bearer&refresh_token=_your_refresh_token_here');
var newUri=Uri(查询:Uri.toString().substring(Uri.toString().indexOf('#'))+1));
print(newUri.queryParameters['access\u token'])//您的\u token\u在这里;
解决方案2:

var uri=uri.parse('http://localhost:8585/callback#access_token=your_token_here&expires_in=315360000&token_type=bearer&refresh_token=_your_refresh_token_here');
var newUri=Uri.parse(Uri.toString().replaceFirst('#','?');
print(newUri.queryParameters['access\u token'])//您的\u token\u在这里;

如果你在某个问题上遇到困难,就用你能想到的最简单的方法来解决它。在这种情况下,您可以使用
string.indexOf('access_token')
string.substring
来获取令牌。@aligator问题是我无法获取完整路径;我能想到的每个获取uri路径的方法都以“回调”结尾。谢谢你的回复!问题是我得到了一个HttpRequest,但我无法得到完整的uri字符串。如果我打印request.uri.toString(),我只得到“/callback”,后面没有查询。你知道我怎样才能找到完整的路径吗?