防止 flutter web 切断 url 路径 #
Prevent flutter web cuts off the url path #
我的 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: 它与 url 参数格式一起工作得很好 http://example.com?id_token=abc 但是 我无法控制其他站点 来支持这种格式
我在 flutter 方面找不到任何解决方案。
所以我通过使用空白页解决了我的问题,并使用 javascript 从 #id_token=abc
读取数据,然后使用这样的参数导航到 flutter 主页 index.html?id_token=abc
这是页面内容:
<body>
<script>
document.addEventListener('DOMContentLoaded', function() {
console.log('document is ready');
var url = window.location.href;
console.log(url);
if(url.indexOf('#id_token=') != -1){
var idToken = url.split('#id_token=')[1];
console.log('idToken ' + idToken);
window.location.replace("index.html?id_token=" + idToken);
}else {
console.log('there is no id token');
}
});
</script>
</body>
<div class="center-screen">Waiting...</div>
我的 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: 它与 url 参数格式一起工作得很好 http://example.com?id_token=abc 但是 我无法控制其他站点 来支持这种格式
我在 flutter 方面找不到任何解决方案。
所以我通过使用空白页解决了我的问题,并使用 javascript 从 #id_token=abc
读取数据,然后使用这样的参数导航到 flutter 主页 index.html?id_token=abc
这是页面内容:
<body>
<script>
document.addEventListener('DOMContentLoaded', function() {
console.log('document is ready');
var url = window.location.href;
console.log(url);
if(url.indexOf('#id_token=') != -1){
var idToken = url.split('#id_token=')[1];
console.log('idToken ' + idToken);
window.location.replace("index.html?id_token=" + idToken);
}else {
console.log('there is no id token');
}
});
</script>
</body>
<div class="center-screen">Waiting...</div>