前言
在实际开发中,我们经常碰到ListView中嵌套ListView
实例代码分析
return Scaffold(body: ListView(scrollDirection: Axis.vertical,children: <Widget>[//....一些布局代码//店铺信息ListView.builder(itemCount: 3,shrinkWrap: true,physics: new NeverScrollableScrollPhysics(),itemBuilder: (context,index){return//....一些布局代码},);],));
这次就最主要的是下面的代码,使得我们可以实现ListView嵌套ListView
shrinkWrap: true, //解决无限高度问题physics: new NeverScrollableScrollPhysics(), //禁用滑动事件
我们知道在Flutter里面 ,Listview相当于一个原生的Scrollview,即滑动布局,同时它也可以充当一个数据列表,所以有时候会出现嵌套的情况。
1 那么里面的listview item布局如果没有给定高度的话,它将不显示
2 当手指在内层的listview触摸滑动的时候,发现不起作用,对外层的listview滑动不了,在别处却可以滑动外层的布局
直接上代码解决
ListView(children: <Widget>[ListView(shrinkWrap: true, //为true可以解决子控件必须设置高度的问题physics:NeverScrollableScrollPhysics(),//禁用滑动事件),],)
如果需要两个listview同时滑动,则需要向他们传同一个scrollcontroller
ScrollController _scrollController;ListView(controller:_scrollController,children: <Widget>[ListView(controller:_scrollController,),],)
Flutte的ListView不能直接嵌套ListView解决办法,直接套一个Container即可解决问题
ListView(scrollDirection: Axis.horizontal,children: <Widget>[Container(width: 180,color: Colors.orange,child: ListView(children: <Widget>[Image.network("https://www.itying.com/images/flutter/1.png"),Text('我是一个文本')],),),],),
