Flutter web:使用 url_launcher 在 target="_self" 中启动页面

use*_*307 4 hyperlink flutter-web

我正在使用url_launcher包。

在 Flutter web 中时,我希望 url 在当前页面中打开,而不是在 target="_blank"

我尝试添加 forceWebView: true,

if (await canLaunch(url)) {
  await launch(
    url,
    forceSafariVC: true,
    forceWebView: true,
    headers: <String, String>{'target': '_self'},
  );
} else {
  throw 'Could not launch $url';
}
Run Code Online (Sandbox Code Playgroud)

并且还添加了标题,认为他们可能有事情要做,但他们没有。

有没有办法做到这一点?谢谢

在移动设备和网络中打开 url 的任何其他解决方案也被接受

Abh*_*ran 11

在 flutter_web 中,如果您想实现这一点,您可以使用该webOnlyWindowName属性并通过_self_blank取决于您的选择。

  • _self - 在同一个选项卡中打开。
  • _blank - 在新选项卡中打开。

我不确定它的记录是否正确。但是您可以在此处找到对此负责的代码段。

以下是您可以测试的工作解决方案。

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';
                  }
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Run Code Online (Sandbox Code Playgroud)

更新:12.01.2021 此信息记录在此处的 api 文档中