如何在Flutter中使用多个ListViewBuilder滚动页面

3

我正在尝试创建一个包含多个部分的页面,每个部分都是使用ListView.builder()生成的。 这里我面临的问题是,除非触摸到使用ListView生成的小部件,否则页面不会滚动。

  Widget _widget1(BuildContext context){
    return ListView.builder(
      ....
       .....
    );
  }
  Widget _widget2(BuildContext context){
    return ListView.builder(
      ....
       .....
    );
  }
  Widget _widget3(BuildContext context){
    return ListView.builder(
      ....
       .....
    );
  }

  body: Container(
    child: ListView(
      scrollDirection: Axis.vertical,
      physics: PageScrollPhysics(),
      shrinkWrap: true,
      children: <Widget>[
        Container(
          height: 140.0,
          child: _offersBanner(context)
        ),
        _widget1(context),
        _widget2(context),
        _widget3(context)
      ],
    )
  )
2个回答

5

请尝试这样做,将以下代码添加到ListView.builder中

 shrinkWrap: true,
 physics: ClampingScrollPhysics(),

3
你想要四个滚动列表还是一个合并的列表?
如果你想要前者,你已经做得很好了。
如果你想要后者(一个合并的列表),那么你应该在_widget1、_widget2和_widget3类中使用列而不是列表视图。
我猜你需要后者。
  Widget _widget1(BuildContext context){
    return Column(
      ....
       .....
    );
  }
  Widget _widget2(BuildContext context){
    return Column(
      ....
       .....
    );
  }
  Widget _widget3(BuildContext context){
    return Column(
      ....
       .....
    );
  }
  body: Container(
    child: ListView(
      scrollDirection: Axis.vertical,
      physics: PageScrollPhysics(),
      shrinkWrap: true,
      children: <Widget>[
        Container(
          height: 140.0,
          child: _offersBanner(context)
        ),
        _widget1(context),
        _widget2(context),
        _widget3(context)
      ],
    )
  )

我无法通过上述解决方案解决我的问题。我有四个带有listview.builder()的小部件。页面内容超出了屏幕高度。我无法滚动页面。 - KURRU HEM
您是想要四个可以滚动的列表,还是只需要一个合并后的列表? - Amsakanna
我想要一个能够滚动的组合列表。 - KURRU HEM
使用SingleChildScrollView作为父组件,将一个Column组件添加为它的子组件,并将列表作为该Column组件的子节点。 - Kiro Coneski
@KURRUHEM,那么您可以使用我的第二个解决方案。我已经更新了我的答案,并附上了一些代码。 - Amsakanna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接