需要跟踪用户在View中当前项目位置的时间,在ListView.builder中,Flutter

时间:2019-03-06 12:43:14

标签: android listview dart flutter

需要跟踪用户在ListView Builder中的Item上花费了多少时间。 如果用户看到该帖子的时间超过2秒,请记录该postID。

问题是:

  1. 如何了解列表视图中的当前项目,以便启动计时器
  2. 在列表中,当前项目以及n个以下项目的上方也会呈现,因此如何避免对其进行跟踪

  3. “在列表中的当前项目”和“ n个以下项目”也会呈现,因此如何避免对其进行跟踪

  4. 每个项目的高度可能会有所不同,例如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);
    });
  }

enter image description here

enter image description here

0 个答案:

没有答案