需要跟踪用户在ListView Builder中的Item上花费了多少时间。 如果用户看到该帖子的时间超过2秒,请记录该postID。
问题是:
在列表中,当前项目以及n个以下项目的上方也会呈现,因此如何避免对其进行跟踪
“在列表中的当前项目”和“ n个以下项目”也会呈现,因此如何避免对其进行跟踪
每个项目的高度可能会有所不同,例如Instagram Post(图片+文本)或Only Text(几乎是以上图片的一半)
我正在使用
RenderObject listViewObject = globalKey.currentContext.findRenderObject();
RenderObject animatedBoxObject =
globalKey.currentContext.findRenderObject();
print('---11 didChangeDependencies $listViewObject $animatedBoxObject');
if (listViewObject != null || animatedBoxObject != null) {
print('---11 didChangeDependencies');
final listViewHeight = listViewObject.paintBounds.height;
print('---22 didChangeDependencies');
final animatedObjectTop =
animatedBoxObject.getTransformTo(listViewObject).getTranslation().y;
print('---33 didChangeDependencies');
final animatedBoxVisible =
(animatedObjectTop + globalKey.currentContext.size.height <
listViewHeight);
print('---${widget.index} $animatedBoxVisible');
print('---${widget.index} ${globalKey.currentContext.size.height}');
print('---${widget.index} ${MediaQuery.of(context).size.height}');
print('---${widget.index} ${globalKey.currentContext.size.height < listViewHeight}');
print('---${widget.index} ${Util.scrollController.offset}');
print('---${widget.index} ${Util.scrollController.position.extentAfter}');
print('---${widget.index} ${Util.scrollController.position.extentBefore}');
print('---${widget.index} ${Util.scrollController.position.extentInside}');
并跟踪时间
if (Util.timer != null && Util.timer.isActive) {
Util.timer.cancel();
Util.timer = Timer(Duration(seconds: 3), () {
// if(widget.index==0)
API.trackPost(Util.postList[widget.index].id, widget.index);
// API.trackPost(Util.postList[widget.index].id, widget.index);
});
} else {
Util.timer = Timer(Duration(seconds: 3), () {
API.trackPost(Util.postList[widget.index].id, widget.index);
});
}