flutter - 当我滚动子 ListView Flutter 时,InviewNotifierList(父级)正在重建
问题描述
我正在尝试实现 Instagram reels UI,但是当我滚动评论列表时,Inview Notifier 列表会重建并在后台播放最初提供的视频并暂停当前视频。
我尝试过使用自动 keepAlive,也尝试过使用滚动控制器。但是没有什么能阻止父列表重建。
解决方案
编辑 1,经过进一步检查,在videoAnimationTile.dart
删除 initState,并将所有逻辑移至didchangedependancies
,如下所示:
@override
void didChangeDependencies() {
super.didChangeDependencies();
_controller = AnimationController(vsync: this, duration: Duration(milliseconds: 200));
BetterPlayerConfiguration betterPlayerConfiguration = BetterPlayerConfiguration(
fit: BoxFit.fill,
aspectRatio: (9 / 16),
//Turned visibility off of icons by setting value to false.
controlsConfiguration: BetterPlayerControlsConfiguration(showControls: false),
);
// Setting Up Data Source
BetterPlayerDataSource dataSource = BetterPlayerDataSource(
BetterPlayerDataSourceType.network,
widget.url,
cacheConfiguration: BetterPlayerCacheConfiguration(
useCache: true,
//We Had To Change these Settings.
maxCacheSize: 2 * 1024 * 1024 * 1024,
maxCacheFileSize: 50 * 1024 * 1024),
);
_betterPlayerController = BetterPlayerController(betterPlayerConfiguration);
_betterPlayerController.setupDataSource(dataSource);
}
并将您的观点更改为:
child: InViewNotifierWidget(
id: widget.url,
builder: (BuildContext context, bool isInView, Widget child) {
if (isInView) {
_betterPlayerController.setLooping(true);
_betterPlayerController.play();
} else {
_betterPlayerController.pause();
}
这只会循环当前正在查看的视频,这首先导致了问题,它循环了所有已启动的内容。
问题解决了
https://drive.google.com/file/d/1QRx5bqWWk84RjouvtQO7CsEcOOjSohLl/view?usp=drivesdk
推荐阅读
- .net - 如何在 Powershell 中一次替换多个 .txt 文件中的数据?
- reactjs - reactjs中如何改变选项的颜色?
- python - 将字符串转换为原始字符串并创建文件时出现操作系统错误
- python - 将嵌套的 Json 转换为 CSV Python
- javascript - JavaScript - getElementById 在特定页面上不起作用
- python - 在 Windows 中的 python 3.8 上安装 Django
- python - Python 中的退出代码 77 是什么意思?
- excel-formula - 如何在新的 Excel Calc 引擎中溢出部分单元格区域?
- c# - 带有 CollectionAssert.AreEquivalent() 的单元测试列表
- shell - 从文件的同一行中删除重复项