【发布时间】:2020-05-21 09:06:07
【问题描述】:
我的 Flutter 网站从另一个网站重定向,格式如下:
http://example.com/#id_token=abc
我想像这样在initState 中阅读#id_token=abc 中的信息
@override
void initState() {
super.initState();
var url = html.window.location.href;
if (url.contains('id_token=')) {
// read data
}
}
但是flutter站点在转到initState之前会自动重新加载并切断#id_token部分(调试时本地主机相同),新的url是
http://example.com/#/
这使我的代码无法正确读取id_token 信息
看起来很奇怪,我该如何防止这种情况发生?
P/s:它适用于像 http://example.com?id_token=abc 这样的 url 参数格式,但 我无法控制其他网站 支持这种格式
【问题讨论】:
-
这是因为 Flutter 使用了基于哈希的导航。如果该页面不存在,则将其替换为 root uri
/#/。看看:github.com/flutter/flutter/issues/33245 -
@MisirJafarov 所以基本上没有办法处理我的案子?
-
我没有在 web 上使用过 Flutter。您可以尝试实现 url 导航(如果还没有),然后检查哈希是否有效。 reddit.com/r/FlutterDev/comments/ed5mq9/…
-
我在使用带有 gotrue 的 supabase 时遇到了同样的问题,它返回一个 baseUrl/#accessToken url。 Flutter 只是削减了 # 之后的所有内容,在移动设备和 Web 上也是如此。我正在使用导航器 2.0/路由器。将网络上的 url 策略更改为不使用 baseUrl/#/ 无济于事。 @R4j 你找到解决办法了吗?
-
@nstrelow 抱歉迟到了,请在下面查看我的答案
标签: flutter flutter-web