我有一个使用Flutter Web创建的简单Web应用程序。我想知道如何在颤动的Web应用程序中的external url
或new tab
中打开新的the same tab
。说我想打开网址https://stackoverflow.com/questions/ask
答案 0 :(得分:7)
一种简单的方法是只创建一个按钮并使用dart:html
的{{3}}方法:
import 'dart:html' as html;
// ...
html.window.open('https://stackoverflow.com/questions/ask', 'new tab');
name
参数(我留为'new tab'
)指的是新标签页的窗口名称,您可以从window.open()
中了解更多信息。
答案 1 :(得分:2)
我想你想要这个:
import 'dart:js' as js;
.
.
.
FlatButton(
child: Text("Button"),
onPressed: () {
js.context.callMethod("open", ["https://stackoverflow.com/questions/ask"]);
},
)
答案 2 :(得分:2)
扩展@xuyanjun 的答案,当想要打开从 flutter web 到新选项卡的外部链接时效果很好。但是,如果您想在当前运行 flutter Web 应用程序的同一选项卡中打开指向该网站的外部链接。
那么你可以这样做。
import 'dart:js' as js;
// ...
FlatButton(
child: Text('Button'),
onPressed: () {
js.context.callMethod('open', ['https://blup.in/','_self']); //<= find explanation below
},
)
说明:- flutter 的 dart:js 包提供了调用特定于 web 的函数的功能,例如 flutter 中的 open
函数,列表中的所有字符串都是传递给函数引用 {{3} }.
因此,如果您想打开新标签,则不需要传递 seconds 参数,但如果您想在同一标签中打开,则将 _self
作为第二个参数传递。
答案 3 :(得分:1)
您可以使用url_launcher plugin
然后在您的代码中
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
void main() {
runApp(Scaffold(
body: Center(
child: RaisedButton(
onPressed: _launchURL,
child: Text('Show Flutter homepage'),
),
),
));
}
_launchURL() async {
const url = 'https://flutter.io';
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
示例来自打包站点
答案 4 :(得分:1)
https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_web
url_launcher
是android和ios的解决方案,最近它增加了对网络的支持。
答案 5 :(得分:0)
在这里https://stackoverflow.com/a/56656885/361832
回答 Flutter Web还不支持插件,因此您必须使用dart:html
上的替换插件
https://api.dartlang.org/stable/2.4.0/dart-html/Window/open.html window.open(url,'tab');
或
https://api.dartlang.org/stable/2.4.0/dart-html/Window/location.html window.location.assign(url);