首页 > 解决方案 > 如何在颤动中左右滑动时停止PageView重建

问题描述

我想在左右滑动上停止 PageView 重建。基本上我在这个 PageView 中有 1 个带水平轴的 PageView 我还有一个带垂直轴的 PageView。

在 1 Pageview 我只有 2 个孩子,但在第二个 PageView 我有基于 http 请求的孩子。

问题:当用户将 1 PageView 向右然后向左滚动时,1 PageView 会重建第二个 Pageview 子项并将页面索引自动设置为 0。

期望:只是我想在用户从左向右滚动时停止重建 1 PageView 然后将 1 PageView 停止到正确的位置并忽略设置位置 0。

页面视图示例

return PageView(
  scrollDirection: Axis.horizontal,
  allowImplicitScrolling: false,
  controller: _main_pageController,
  children: [
    PageView(
      controller: _pageController,
      scrollDirection: Axis.vertical,
      children: [
          for(int index = 0; index < complexTutorial.data.length;index++)
          COntainer(color:Colors.yellow),
                ],),
          
          // below is second child of 1 PageView.

         Container(child:Text("USER SETTING")),
          ],);

请帮助解决这个问题我是新来的颤振谢谢。

标签: flutterdartflutter-layout

解决方案


将容器放在 StateFulWidget 中,然后使用AutomaticKeepAliveClientMixin

并覆盖 StateFulWidget 中的方法 'wantKeepAlive'

class YourStateFulWidget extends StatefulWidget with AutomaticKeepAliveClientMixin{


  @override
  _YourStateFulWidgetState createState() => _YourStateFulWidgetState();
}

class _YourStateFulWidgetState extends State<YourStateFulWidget> {
  @override
  Widget build(BuildContext context) {
   
    return Container(
       child: Text("USER SETTING")
      
    );
  }

 @override
  bool get wantKeepAlive => keepAlive;
}

推荐阅读