我正在制作一个 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 在应用程序和浏览器之间反弹。
我也尝试过:
但还没有任何效果。还有其他人也遇到过这个问题吗?任何帮助将不胜感激。谢谢你:)
第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 方法。