Flutter:“页面浏览量”构建器:有效地激活和停用侦听器

时间:2019-03-16 10:03:06

标签: flutter

我正在借助Pageviewbuilder创建无限的页面列表。

 body: PageStorage(
      bucket: bucket,
      child: PageView.builder(
          scrollDirection: Axis.vertical,
          physics: ClampingScrollPhysics(),              
          controller: controller,
          itemBuilder: (BuildContext context, int index) {
            return Page(index: index, controller: controller);
          }),
    ));

然后将控制器简单设置为:

 controller = PageController(
  viewportFraction: 1.0,
);

分别在上述页面小部件的initState()和dispose()中附加/分离了用于获取页面数据的侦听器:

void initState() {
super.initState();
print('Init State of Page ${widget.index} called..');
//--- Listener activate --- 

}

void dispose() {
super.dispose();
//--- Listener Deactivate --- 

}

尽管这没有问题,但有两个发现:

  1. 当用户从页面1滚动到页面2时,页面2的setState()被调用(使侦听器在该页面上获取数据设置),甚至在下一页进入之前当释放滚动时,将滚动第2页的dispose()。
  2. 滚动方向设置为“垂直”。但是,在Page-2中时,如果用户尝试水平滚动,则会有轻微的抖动,从而导致Page-1的构建开始。

我打算实现的目标:

  • 仅当第1页的滚动超过第1页的50%时, 要调用的第2页初始化状态。
  • 激活和停用各个页面上的侦听器的正确方法。

任何输入都会很有帮助。 谢谢。

0 个答案:

没有答案