Nor*_*ert 2 dart flutter flutter-web
我有一个使用Flutter Web创建的简单Web应用程序。我想知道如何external url在a new tab或在the same tabFlutter Web应用程序中打开新的a 。说我想打开网址/sf/
mah*_*mnj 18
As of url_launcher: ^6.1.0 The plugin has support for webOnlyWindowName property, You can declare a wrapper function below
Future<void> launch(String url, {bool isNewTab = true}) async {
await launchUrl(
Uri.parse(url),
webOnlyWindowName: isNewTab ? '_blank' : '_self',
);
}
Run Code Online (Sandbox Code Playgroud)
and use it like this
onTap:(){
launch('/sf/', isNewTab: true)
}
Run Code Online (Sandbox Code Playgroud)
Phi*_*aro 14
一种简单的方法是创建一个按钮并使用dart:html的window.open()方法:
import 'dart:html' as html;
// ...
html.window.open('https://stackoverflow.com/questions/ask', 'new tab');
Run Code Online (Sandbox Code Playgroud)
该name参数-这是我离开的'new tab'-是指新标签的窗口名称,哪些可以借鉴更多的MDN的文档。
https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_web
url_launcher 一直是 android 和 ios 的解决方案,最近它增加了对 web 的支持。
您可以使用 url_launcher 插件
然后在你的代码中
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher_string.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 canLaunchUrlString(url)) {
await launchUrlString(url);
} else {
throw 'Could not launch $url';
}
}
Run Code Online (Sandbox Code Playgroud)
示例取自包网站
扩展 @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
},
)
Run Code Online (Sandbox Code Playgroud)
说明:- flutter 中的 dart:js 包提供了调用特定于 Web 的函数(例如openflutter 中的函数)的功能,列表中的所有字符串都是传递给函数的参数,请参阅this。
因此,如果您想打开新选项卡,则不需要传递秒参数,但如果您想在同一选项卡中打开,则作为_self第二个参数传递。
我想你想要这个:
import 'dart:js' as js;
.
.
.
FlatButton(
child: Text("Button"),
onPressed: () {
js.context.callMethod("open", ["/sf/"]);
},
)
Run Code Online (Sandbox Code Playgroud)
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);
| 归档时间: |
|
| 查看次数: |
1033 次 |
| 最近记录: |