如何在多个列表视图构建器中滚动页面

时间:2019-03-15 10:30:22

标签: dart flutter

我正在尝试创建一个包含多个部分的页面,并且每个部分都是使用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 个答案:

答案 0 :(得分:0)

您要四个滚动列表还是仅一个组合列表

  • 如果您想要前任,您所做的工作应该按照您想要的方式进行。
  • 如果要使用后跟(组合列表),则应在_widget1,_widget2和_widget3类中使用列而不是listview。

我想你需要后者。

  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)
      ],
    )
  )

答案 1 :(得分:0)

尝试一下,   请在ListView.builder中添加以下代码

 shrinkWrap: true,
 physics: ClampingScrollPhysics(),