前言
    在实际开发中,我们经常碰到ListView中嵌套ListView

    实例代码分析

    1. return Scaffold(
    2. body: ListView(
    3. scrollDirection: Axis.vertical,
    4. children: <Widget>[
    5. //....一些布局代码
    6. //店铺信息
    7. ListView.builder(
    8. itemCount: 3,
    9. shrinkWrap: true,
    10. physics: new NeverScrollableScrollPhysics(),
    11. itemBuilder: (context,index){
    12. return
    13. //....一些布局代码
    14. },
    15. );
    16. ],
    17. )
    18. );

    这次就最主要的是下面的代码,使得我们可以实现ListView嵌套ListView

    1. shrinkWrap: true, //解决无限高度问题
    2. physics: new NeverScrollableScrollPhysics(), //禁用滑动事件

    我们知道在Flutter里面 ,Listview相当于一个原生的Scrollview,即滑动布局,同时它也可以充当一个数据列表,所以有时候会出现嵌套的情况。
    1 那么里面的listview item布局如果没有给定高度的话,它将不显示
    2 当手指在内层的listview触摸滑动的时候,发现不起作用,对外层的listview滑动不了,在别处却可以滑动外层的布局

    直接上代码解决

    1. ListView(
    2. children: <Widget>[
    3. ListView(
    4. shrinkWrap: true, //为true可以解决子控件必须设置高度的问题
    5. physics:NeverScrollableScrollPhysics(),//禁用滑动事件
    6. ),
    7. ],
    8. )

    如果需要两个listview同时滑动,则需要向他们传同一个scrollcontroller

    1. ScrollController _scrollController;
    2. ListView(
    3. controller:_scrollController,
    4. children: <Widget>[
    5. ListView(
    6. controller:_scrollController,
    7. ),
    8. ],
    9. )

    Flutte的ListView不能直接嵌套ListView解决办法,直接套一个Container即可解决问题

    1. ListView(
    2. scrollDirection: Axis.horizontal,
    3. children: <Widget>[
    4. Container(
    5. width: 180,
    6. color: Colors.orange,
    7. child: ListView(
    8. children: <Widget>[
    9. Image.network("https://www.itying.com/images/flutter/1.png"),
    10. Text('我是一个文本')
    11. ],
    12. ),
    13. ),
    14. ],
    15. ),