flutter - 如何像 Instagram 一样在自定义网格中播放视频
问题描述
我有一个类似于 Instagram 的搜索字段,我使用 flutter_staggered_grid_view 实现了它,并且能够在大框中显示视频,但是当用户滚动时如何播放它们。我正在尝试使用 inview_notifier_list,但无法成功。我只想在用户向下滚动时播放视频。如何做到这一点?
解决方案
我使用 VisibilityDetector 实现了这一点。如果 80% 的视频可见,则播放,否则暂停。
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
final deviceRatio = size.width / size.height;
return Scaffold(
body: Center(
child: controller.value != null && controller.value.initialized
? VisibilityDetector(
key: ObjectKey(controller),
onVisibilityChanged: (visibility) {
if (visibility.visibleFraction > 0.8) {
controller.play();
} else {
controller.pause();
}
},
child: CachedVideoPlayer(controller)
)
: Stack(
children: <Widget>[
Positioned.fill(
child: Container(
child: Image.network(
widget.image,
fit: BoxFit.cover,
),
),
),
],
),),
);
}
}
推荐阅读
- javascript - ExpressJS POST 参数混淆
- javascript - Google 表格 API 变量
- ssl - 非 www 到 www 重定向在 Firefox 中不起作用;使用 nginx 服务器在 Chrome 中工作
- c# - 我可以更改 C# 中的函数/方法定义吗?(重新定义,而不是覆盖)
- ethereum - 最佳实践:如何处理合约回调的 120 秒超时?
- android - 布局只是空白?
- c# - TabItem 动态绑定内容
- node.js - 无法从 Nodejs 获得 Ajax 响应
- marker - 在angular2中隐藏上一个地图标记
- java - Java Atm 机器(如何添加注释)