问题
I am using url_launcher package.
When in Flutter web, I would like the url to be opened in the current page, and not in target="_blank"
I tried adding forceWebView: true,
if (await canLaunch(url)) {
await launch(
url,
forceSafariVC: true,
forceWebView: true,
headers: <String, String>{'target': '_self'},
);
} else {
throw 'Could not launch $url';
}
And also added headers thinking they might have something to do, but they don't.
Is there a way to do this? Thank you
Any other solution to open a url in mobile and in web, and that enables the possiblity to open the web link in self is accepted also
回答1:
In flutter_web if you want to achieve this you can use the webOnlyWindowName
property and pass _self
or _blank
depending on your choice.
_self
- opens in the same tab._blank
- opens in a new tab.
I am not sure if its documented properly. But you can find the piece of code responsible for this here.
Following is a working solution which you can test.
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
void main() {
runApp(UrlLauchDemo());
}
class UrlLauchDemo extends StatelessWidget {
String url = 'https://www.google.com';
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
MaterialButton(
color: Colors.greenAccent,
child: Text('Launch Google in this page'),
onPressed: () async {
if (await canLaunch(url)) {
await launch(
url,
forceSafariVC: true,
forceWebView: true,
webOnlyWindowName: '_self',
);
} else {
throw 'Could not launch $url';
}
},
),
SizedBox(
height: 100,
),
MaterialButton(
color: Colors.blueAccent,
child: Text('Launch Google in new Tab'),
onPressed: () async {
if (await canLaunch(url)) {
await launch(
url,
forceSafariVC: true,
forceWebView: true,
webOnlyWindowName: '_blank',
);
} else {
throw 'Could not launch $url';
}
},
),
],
),
),
),
);
}
}
Update: 12.01.2021 This information is documented in the api documentation here
来源:https://stackoverflow.com/questions/64653342/flutter-web-launch-page-in-target-self-with-url-launcher