如何通过Flutter代码打开Web浏览器(URL)?


Answers:


138

TL; DR

现在已实现为插件

const url = "https://flutter.io";
if (await canLaunch(url))
  await launch(url);
else 
  // can't launch url, there is some error
  throw "Could not launch $url";

完整示例:

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

void main() {
  runApp(new Scaffold(
    body: new Center(
      child: new RaisedButton(
        onPressed: _launchURL,
        child: new Text('Show Flutter homepage'),
      ),
    ),
  ));
}

_launchURL() async {
  const url = 'https://flutter.io';
  if (await canLaunch(url)) {
    await launch(url);
  } else {
    throw 'Could not launch $url';
  }
}

在pubspec.yaml中

dependencies:
  url_launcher: ^5.4.2

特殊字符:

如果url值包含空格或URL现在允许的其他值,请使用

Uri.encodeFull(urlString)Uri.encodeComponent(urlString),而是传递结果值。


2
请注意,您可能需要创建一个新的扑项目并复制了你的扑具体的东西(libpubspec.yaml对于这一点,等等),或者反过来更新平台特定的文件夹,在旧的项目工作。
david.mihola

3
注意:不要忘记添加url_launcher: ^3.0.2到pubspec.yaml
hbhakhra

“添加到现有应用程序”是什么意思?也许你在文件中android/ios/已经过时。如果它在新应用程序中有效,则比较文件并在项目中更新它们。您也可以删除这些目录并运行flutter create .,然后重新应用手动更改。
君特Zöchbauer

@hbhakhra现在url_launcher:^ 5.0.2继续检查。
Pratik Butani

1
如何在没有url_launcher插件的情况下打开flutter_web的链接?
比安卡

5

对于Flutter:

如所描述的上述由君特Zöchbauer

对于Flutter Web:

import 'dart:html' as html;

然后使用:

html.window.open(url, name);

flutter clean如果import无法解决,请确保您运行。


这不适用于flutter android或ios
jay padaliya

3

如果您要使用url_launcher,请以这种形式使用

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  url_launcher: ^5.0.2
  flutter:
    sdk: flutter

这个答案也适用于绝对的初学者:他们正在思考抖动的sdk。不,那是一个失败。这些软件包是多余的,不在随波逐流的SDK中。这些是辅助软件包(单个小型框架帮助程序)。


3

使用URL启动器插件url_launcher

要启动网页,让我们成为一个异步函数并执行以下操作:

launchURL(String url) async {
    if (await canLaunch(url)) {
      await launch(url);
    } else {
      throw 'Could not launch $url';
    }
  }

如果我们想让iOS和Android都在应用程序内部(作为WebView)打开网页,那么请添加forceWebView: true以下内容:

 launchURL(String url) async {
    if (await canLaunch(url)) {
      await launch(url, forceWebView: true);
    } else {
      throw 'Could not launch $url';
    }
 }
   

并这样称呼它

onTap: () {
    const url = 'https://google.com';
    launchURL(url);
}

在此处输入图片说明


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.