【问题标题】:how to only render pageView pages after the sliding animation is over滑动动画结束后如何只渲染pageView页面
【发布时间】:2020-12-26 16:36:21
【问题描述】:

在我的应用程序中,我使用了有很多要显示的重页、要渲染的图像等等,当滑动时发生的情况是我的滑动动画会在我的页面在滑动中呈现时交错,我想尽量减少这种影响。

我想让页面默认显示某个小部件(最好是带有背景颜色、闪光或任何我可以选择的占位符的单个容器),然后在滑动动画完成时显示数据正在后台计算将出现。这样,我刷卡的时候就不用看到卡顿动画了。

除了必须手动使用流构建器来侦听 pageView 控制器之外,还有其他方法吗?

【问题讨论】:

  • 请分享PageView的代码!

标签: flutter dart pageviews


【解决方案1】:

你可以试试这个,preload_page_view,会预加载屏外浏览量~

[已编辑] 或者,如果你只把上下文当 index == onchangedIndex 之类的,

int _currentIndex = 0;

PageView.builder(
  onPageChanged: (index){
    //Even you can use here Future.delay to delay a second after onPageChanged, if loading your content is too quick
                              setState(() {
                                _currentIndex = index;
                              });
                            },
  itemBuilder: (context, index){
    return _currentIndex == index ? //your content : Container(/*with background color*/);
}

【讨论】:

  • 我实际上尝试过这个,但它确实对我的应用程序的性能和“jankiness”产生了不好的影响
【解决方案2】:

给 Pages 添加一个延迟,等于 PageView 的动画持续时间。

1.创建一个变量,

final duration = Duration(milliseconds: 600);

2.给Page()添加延迟,

Future.delayed(duration, () => Page() );

3.动画到不同的页面,

_pageController.animateToPage(
  1,
  duration: duration,
  curve: Curves.easeInOut,
);

【讨论】:

  • 如果我没有手动控制滑动,这并没有多大帮助。我也无法获取或设置页面浏览控制器上的滑动速度
  • 你能分享一下PageView的应对方法吗?
猜你喜欢
  • 2019-11-29
  • 2016-08-10
  • 2021-02-06
  • 2020-08-26
  • 2021-03-29
  • 1970-01-01
  • 2017-01-26
  • 2020-07-05
  • 1970-01-01
相关资源
最近更新 更多