我基本上是想在按下按钮时从我的应用程序中打开一个特定的youtube视频,如果youtube应用程序安装在用户的设备上,那么视频应该在youtube应用程序中打开(而不是在浏览器或单独的webview中)。
为此我使用了url_launcher
软件包,它在Android上运行良好。但在iOS上,YouTube应用程序即使安装也不会打开,而是打开一个单独的Web窗口,其中相应的YouTube URL显示为网页。
我想,我可以像这样覆盖这种行为:
_launchURL() async {
if (Platform.isIOS) {
if (await canLaunch('youtube://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw')) {
await launch('youtube://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw');
} else {
if (await canLaunch('https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw')) {
await launch('https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw');
} else {
throw 'Could not launch https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw';
}
}
} else {
const url = 'https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw';
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
}
但是它没有起作用。如果你想知道的话,我使用了下面的导入:
import 'dart:io' show Platform;
import 'package:url_launcher/url_launcher.dart';
我非常肯定,youtube://
URL方案工作(启动YouTube应用程序),因为我在第三方应用程序(发射中心专业版和Pythonista)上测试了它。
最后一件事我无法测试,是如果Platform.isIOS
是真的在我的iPhone。
有没有一种有效的方法,打开YouTube应用程序从Flutter?
4条答案
按热度按时间koaltpgm1#
我修正了这个问题,我必须设置
forceSafariVC: false
,因为默认情况下它是真的,这会导致url在应用程序中的一个webview中打开。这实际上记录在
url_launcher
文档中,但有些隐藏...k97glaaz2#
你不需要使用所有的 if/else 子句,最重要的是要考虑设备是否有YouTube应用,不管操作系统是什么(* 记住把你的函数定义为Future,因为异步 *):
这里要突出显示的是避免将属性 universalLinksOnly 设置为true的几个if/else。
uidvcgyl3#
我已经解决了这个问题。你可以试试下面的代码:
iklwldmw4#
使用相同 Package :https://pub.dev/packages/url_launcher
这是最新的工作示例。上面的大多数答案都已过时或使用过时的软件包。默认模式是LaunchMode.platformDefault。更改为LaunchMode.externalApplication将打开youtube应用程序。希望这对您有所帮助