Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何仅在滑动动画结束后渲染页面视图页面_Flutter_Dart_Pageviews - Fatal编程技术网

Flutter 如何仅在滑动动画结束后渲染页面视图页面

Flutter 如何仅在滑动动画结束后渲染页面视图页面,flutter,dart,pageviews,Flutter,Dart,Pageviews,在我的应用程序中,我使用了很多要显示的重页面、要渲染的图像以及更多内容,滑动时发生的情况是,当我的页面在滑动中渲染时,我的滑动动画将错开,我希望最小化这种影响 我希望页面在默认情况下显示某个小部件(最好是带有bg颜色的单个容器,或微光,或我可以选择的任何占位符),然后当滑动动画完成时,将显示正在后台计算的数据。这样,我就不必在刷卡时看到janky动画 除了必须手动使用streambuilders来侦听pageView控制器外,还有其他方法可以做到这一点吗?为页面添加一个延迟,该延迟等于pageV

在我的应用程序中,我使用了很多要显示的重页面、要渲染的图像以及更多内容,滑动时发生的情况是,当我的页面在滑动中渲染时,我的滑动动画将错开,我希望最小化这种影响

我希望页面在默认情况下显示某个小部件(最好是带有bg颜色的单个容器,或微光,或我可以选择的任何占位符),然后当滑动动画完成时,将显示正在后台计算的数据。这样,我就不必在刷卡时看到janky动画


除了必须手动使用streambuilders来侦听pageView控制器外,还有其他方法可以做到这一点吗?

为页面添加一个延迟,该延迟等于pageView的动画持续时间

1.创建一个变量

final duration = Duration(milliseconds: 600);
2.将延迟添加到页面()

3.设置动画到不同的页面

_pageController.animateToPage(
  1,
  duration: duration,
  curve: Curves.easeInOut,
);
您可以尝试此操作,页面视图外部屏幕将被预加载~

[已编辑] 或者,如果只在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*/);
}

如果我没有手动控制滑动,这不会有多大帮助。此外,我无法获取或设置PageView控制器上的滑动速度。您可以共享PageView的范围吗?请共享PageView的代码!我确实尝试过这个,但它确实对我的应用程序的性能和“Jankines”产生了不良影响,并用新方法进行了更新
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*/);
}