如何在外部浏览器中打开 URL,绕过应用程序链接?

问题描述 投票:0回答:1

我正在制作一个 WebView flutter 应用程序,并且刚刚添加了应用程序链接。但是,当我收到前往我的网站主页的应用程序链接(例如

1st.money/home
)时,我不希望这些链接在应用程序内部打开,因此我尝试将它们重新启动到浏览器中。

这是我到目前为止的代码:

import 'package:url_launcher/url_launcher.dart';
....
Future<void> openUrlInBrowser(String urlStr) async {
  final Uri url = Uri.parse(urlStr);
  if (!await launchUrl(
    url,
    mode: LaunchMode.externalApplication,
  )) {
    throw Exception('Could not launch $url');
  }
}

这会在浏览器中打开 URL,但浏览器会立即将其发送回应用程序,因为它已注册为应用程序链接。这会创建一个循环,URL 在应用程序和浏览器之间反弹。

我也尝试过:

  • 使用LaunchMode.externalNonBrowserApplication
  • 添加网页视图配置。

但还没有任何效果。还有其他人也遇到过这个问题吗?任何帮助将不胜感激。谢谢你:)

ios flutter dart url-launcher android-app-links
1个回答
0
投票

第1步:添加 url_launcher 依赖

将 url_launcher 包添加到您的 pubspec.yaml 中:


dependencies:
  flutter:
    sdk: flutter
  url_launcher: ^6.1.9

第2步:导入并使用url_launcher 在您的 Dart 代码中,导入 url_launcher 包并使用 launchUrl 函数在外部浏览器中打开 URL。

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Open URL in Browser')),
        body: Center(
          child: ElevatedButton(
            onPressed: () => _launchURL('https://www.example.com'),
            child: Text('Open URL'),
          ),
        ),
      ),
    );
  }

  Future<void> _launchURL(String url) async {
    final Uri uri = Uri.parse(url);
    if (await canLaunchUrl(uri)) {
      await launchUrl(
        uri,
        mode: LaunchMode.externalApplication,
      );
    } else {
      throw 'Could not launch $url';
    }
  }
}

创建启动 URL 的方法: _launchURL 方法检查 URL 是否可以启动,如果可以,则使用 launchUrl 和 LaunchMode.externalApplication 在外部浏览器中打开 URL。 使用方法:按下按钮时,会使用所需的 URL 调用 _launchURL 方法。

© www.soinside.com 2019 - 2024. All rights reserved.