android - Flutter WebView 退出全屏 YouTube 视频问题:黑屏,稍后观看和分享按钮
问题描述
我有一个 Flutter 应用程序,可以在 WebView 中显示 YouTube 视频。它工作正常,除了在一种情况下:如果你全屏打开它并且在 YouTube 播放器中按下 = s 嵌入“从全屏退出”按钮:从全屏退出后我仍然听到声音,但我看到一个带有按钮共享的黑屏和稍后观看。如果我通过按 android 后退按钮退出全屏模式,它可以正常工作。何来修?
Widget build(BuildContext context) {
return Container(
child: MyWebView(
initUrl:
'https://www.youtube.com/embed/${id}?autoplay=1&rel=0&showinfo=0',
),
)
}
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
class MyWebView extends StatefulWidget {
final String initUrl;
MyWebView({
this.initUrl,
});
@override
MyWebViewState createState() => MyWebViewState();
}
class MyWebViewState extends State<MyWebView> {
InAppWebViewController webView;
String url;
bool webLoadError = false;
@override
void initState() {
url = widget.initUrl;
super.initState();
}
@override
Widget build(BuildContext context) {
return Stack(
children: [
InAppWebView(
initialUrl: url,
initialHeaders: widget.headers,
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
debuggingEnabled: true,
useShouldOverrideUrlLoading: true,
clearCache: true,
mediaPlaybackRequiresUserGesture: false,
),
),
onLoadStart: (controller, string) {
setState(() {
webView = controller;
webLoadError = false;
});
},
);
}
}
解决方案
如果您输入代码,也许我可以为您提供更多帮助。也许原因是当你展示它时视频还没有准备好。_controller.value.initialized
当视频未准备好返回Container()
代码段时,您可以使用 进行检查:
return Center(
child: _controller.value.initialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: Container(),
);
或者,如果您使用 webview 从应用程序标记中删除这些行。
android:hardwareAccelerated="false"
android:largeHeap="true"
推荐阅读
- java - java.lang.instrument 断言在为弹簧启动执行器添加依赖项后失败
- javascript - 捕获文件下载
- php - 编写了一个代码来显示随机照片,但在给定时间只需要显示四个 img
- sql - 在 PL/SQL Oracle 中将一些输出数据制成表格的更好方法?
- rstudio - 在 RStudio 中编织默认 RMarkdown 文件时出错
- vim - 感叹号/爆炸符号可以缩写吗?
- python - 使作为不可变对象的键的值具有多个引用,以便它们可以被任何这些引用更改
- python - 为什么ureg(0)等于1?
- javascript - 在有限制的情况下单击正文时调用 javascript 程序
- laravel - 如何在 laravel 5.7 中限制排队验证和密码重置通知电子邮件