Flutter listview中的颤振包裹小部件
我想在Flutter listview中的颤振包裹小部件,flutter,Flutter,我想在listview中换行,这样向下滚动时,搜索栏就会消失。 我试过这样做 new ListView( shrinkWrap: true, children: <Widget>[ new Column( mainAxisSize: MainAxisSize.min, children: <Widget>[ new GestureDetector( chi
listview
中换行,这样向下滚动时,搜索栏就会消失。
我试过这样做
new ListView(
shrinkWrap: true,
children: <Widget>[
new Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
new GestureDetector(
child: new Container(
color: Colors.grey[300],
child: new Padding(
padding: const EdgeInsets.all(8.0),
child: new Card(
margin: const EdgeInsets.fromLTRB(4.0, 0.0, 4.0, 0.0),
child: new ListTile(
leading: new Icon(Icons.search),
title: new Text('Search',
style: new TextStyle(color: Colors.grey[600])),
),
),
),
),
onTap: () {
print(
'tapped');
},
),
new GridView.builder(
itemCount: items.length,
gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2),
itemBuilder: (BuildContext context, int index) {
return new GestureDetector(
child: new Card(
elevation: 5.0,
child: new Container(
decoration: new BoxDecoration(
image: new DecorationImage(
fit: BoxFit.cover,
image: NetworkImage(
'https://images.unsplash.com/photo-1533514114760-4389f572ae26?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=4ada6181447db788f0fc94d5d2e35c63&auto=format&fit=crop&w=500&q=60'),
),
),
),
),
onTap: () {
showDialog(
barrierDismissible: false,
context: context,
child: new AlertDialog(
title: new Column(
children: <Widget>[
new Text("GridView"),
new Icon(
Icons.favorite,
color: Colors.green,
),
],
),
content: new Text("Selected Item $index"),
actions: <Widget>[
new FlatButton(
onPressed: () {
Navigator.of(context).pop();
},
child: new Text("OK"))
],
),
);
},
);
},
),
],
),
],
),
新建列表视图(
收缩膜:对,
儿童:[
新专栏(
mainAxisSize:mainAxisSize.min,
儿童:[
新手势检测器(
子容器:新容器(
颜色:颜色。灰色[300],
孩子:新的填充物(
填充:常数边集全部(8.0),
孩子:新卡(
边距:LTRB(4.0,0.0,4.0,0.0)的常数边集,
孩子:新的ListTile(
前导:新图标(Icons.search),
标题:新文本('搜索',
样式:新文本样式(颜色:Colors.grey[600]),
),
),
),
),
onTap:(){
印刷品(
"抽头";;
},
),
新建GridView.builder(
itemCount:items.length,
gridDelegate:新SliverGridDelegateWithFixedCrossAxisCount(
交叉轴计数:2),
itemBuilder:(构建上下文,int索引){
返回新的手势检测器(
孩子:新卡(
标高:5.0,
子容器:新容器(
装饰:新盒子装饰(
图片:新装饰图片(
适合:BoxFit.cover,
图片:NetworkImage(
'https://images.unsplash.com/photo-1533514114760-4389f572ae26?ixlib=rb-0.3.5&ixid=Eyjhchbawqiojeymdd9&s=4ada6181447db788f0fc94d5d2e35c63&auto=format&fit=crop&w=500&q=60’,
),
),
),
),
onTap:(){
显示对话框(
禁止:错误,
上下文:上下文,
子:新建警报对话框(
标题:新专栏(
儿童:[
新文本(“GridView”),
新图标(
我的最爱,
颜色:颜色。绿色,
),
],
),
内容:新文本(“选定项$index”),
行动:[
新扁平按钮(
已按下:(){
Navigator.of(context.pop();
},
子项:新文本(“确定”)
],
),
);
},
);
},
),
],
),
],
),
但列表视图是不可见的,控制台说
垂直视口被赋予无限高。视口在视图中展开
滚动方向以填充其容器
我尝试插入展开的
和收缩包装
,但仍然没有显示任何内容。
有人知道如何解决这个问题吗?搜索字段小部件不需要列,直接使用即可。 从父列表视图中删除
包覆面提取
。
将包覆面提取添加到GridView中,并指定物理:
new ListView(children: <Widget>[
new GestureDetector(
child: new Container(
color: Colors.grey[300],
child: new Padding(
padding: const EdgeInsets.all(8.0),
child: new Card(
margin: const EdgeInsets.fromLTRB(4.0, 0.0, 4.0, 0.0),
child: new ListTile(
leading: new Icon(Icons.search),
title: new Text('Search',
style: new TextStyle(color: Colors.grey[600])),
),
),
),
),
onTap: () {
print('tapped');
},
),
GridView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemCount: items.length,
gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2),
itemBuilder: (BuildContext context, int index) {
return new GestureDetector(
child: new Card(
elevation: 5.0,
child: new Container(
decoration: new BoxDecoration(
image: new DecorationImage(
fit: BoxFit.cover,
image: NetworkImage(
'https://images.unsplash.com/photo-1533514114760-4389f572ae26?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=4ada6181447db788f0fc94d5d2e35c63&auto=format&fit=crop&w=500&q=60'),
),
),
),
),
onTap: () {
showDialog(
barrierDismissible: false,
context: context,
child: new AlertDialog(
title: new Column(
children: <Widget>[
new Text("GridView"),
new Icon(
Icons.favorite,
color: Colors.green,
),
],
),
content: new Text("Selected Item $index"),
actions: <Widget>[
new FlatButton(
onPressed: () {
Navigator.of(context).pop();
},
child: new Text("OK"))
],
),
);
},
);
},
)
]
)
新建列表视图(子项:[
新手势检测器(
子容器:新容器(
颜色:颜色。灰色[300],
孩子:新的填充物(
填充:常数边集全部(8.0),
孩子:新卡(
边距:LTRB(4.0,0.0,4.0,0.0)的常数边集,
孩子:新的ListTile(
前导:新图标(Icons.search),
标题:新文本('搜索',
样式:新文本样式(颜色:Colors.grey[600]),
),
),
),
),
onTap:(){
打印(‘点击’);
},
),
GridView.builder(
收缩膜:对,
物理学:NeverscrollableScroll物理学(),
itemCount:items.length,
gridDelegate:新SliverGridDelegateWithFixedCrossAxisCount(
交叉轴计数:2),
itemBuilder:(构建上下文,int索引){
返回新的手势检测器(
孩子:新卡(
标高:5.0,
子容器:新容器(
装饰:新盒子装饰(
图片:新装饰图片(
适合:BoxFit.cover,
图片:NetworkImage(
'https://images.unsplash.com/photo-1533514114760-4389f572ae26?ixlib=rb-0.3.5&ixid=Eyjhchbawqiojeymdd9&s=4ada6181447db788f0fc94d5d2e35c63&auto=format&fit=crop&w=500&q=60’,
),
),
),
),
onTap:(){
显示对话框(
禁止:错误,
上下文:上下文,
子:新建警报对话框(
标题:新专栏(
儿童:[
新文本(“GridView”),
新图标(
我的最爱,
颜色:颜色。绿色,
),
],
),
内容:新文本(“选定项$index”),
行动:[