flutter - 退出App后如何防止视频播放器出现白屏?
问题描述
我正在尝试从我的资产文件在我的应用程序中播放视频。我正在使用 video_player 包进行颤动。没有做任何特别的事情,只是从“flutter.dev”复制了他们的实现,所以我不会用代码让你厌烦。
但是,我的问题是,我注意到当我退出应用程序(或切换到另一个应用程序,基本上是在应用程序处于后台时)并再次打开它时,视频播放器变成白屏,我必须按下播放再次按钮 (FloatingActionButton) 使其恢复。
关于如何防止这种情况的任何想法?我正在物理 Iphone X 上运行该应用程序
这就是我的 video_player 在 Home_Screen 上的显示方式:
@override
Widget build(BuildContext context) {
return Container(
child: Stack(
children: <Widget>[
FutureBuilder(
future: _initializeVideoPlayerFuture,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return AspectRatio(
aspectRatio: 16 / 9,
child: VideoPlayer(_controller),
);
} else {
return Center(child: CircularProgressIndicator());
}
},
),
Positioned(
bottom: 20.0,
child: Padding(
padding: const EdgeInsets.only(left: 8.0),
child: FloatingActionButton(
onPressed: () {
setState(() {
if (_controller.value.isPlaying) {
_controller.pause();
} else {
_controller.play();
}
});
},
child: Icon(
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
),
),
),
),
],
),
);
}
谢谢
解决方案
在使用视频播放器包时,我遇到了同样的问题。您是否正在检查资源是否真正加载?检查_controller.value.isInitialized
您的构建方法。
像这样的东西:
@覆盖 小部件构建(BuildContext 上下文){ 返回容器( 孩子:堆栈( 孩子们: [ 未来建造者( 未来:_initializeVideoPlayerFuture, 构建器:(上下文,快照){ if (snapshot.connectionState == ConnectionState.done) { var videoLoaded = _controller.value.isInitialized; var widget = videoLoaded ? 纵横比( 纵横比:16 / 9, 孩子:视频播放器(_controller)) :容器(孩子:(文本(“正在加载”))); 返回小部件; } 别的 { 返回中心(子:CircularProgressIndicator()); } }, ), 定位( 底部:20.0, 孩子:填充( 填充:const EdgeInsets.only(左:8.0), 孩子:浮动动作按钮( 按下:(){ 设置状态((){ 如果(_controller.value.isPlaying){ _controller.pause(); } 别的 { _controller.play(); } }); }, 孩子:图标( _controller.value.isPlaying ? Icons.pause : Icons.play_arrow, ), ), ), ), ], ), ); }
推荐阅读
- python - 将本地 python 文件作为类导入
- node.js - 使用 Node.js 复制文件夹的正确方法是什么
- prolog - 排除解决方案中列表的变体/轮换 SWI-Prolog
- laravel - Laravel 用另一个模型更新模型
- spring - JPA Repository - 在列表中获取由表连接引起的重复项
- typescript - 在 TypeScript 类中获取方法名称
- travis-ci - 将 TravisCI 设置为仅在主服务器上推送时发布包
- artificial-intelligence - CLIPS - 是否可以在运行时更改规则的显着性?
- python - 如何使用 postgres 在 peewee 查询中访问 ArrayField 的最后一个索引?
- java - 我无法通过添加数组中每个元素的特定值来计算