Flutter 如何控制飞灰列表视图的高度
listview占据了整个页面,而它的内容占页面的25%,我想在它下面放一些东西 如何控制它的高度,我认为自定义的列表视图是无用的,我可以把它直接放在我的屏幕上,那么你认为呢 屏幕截图在我问题的底部 请帮帮我,因为我已经被它弄得头晕目眩,不再编码了 自定义列表视图Flutter 如何控制飞灰列表视图的高度,flutter,flutter-listview,Flutter,Flutter Listview,listview占据了整个页面,而它的内容占页面的25%,我想在它下面放一些东西 如何控制它的高度,我认为自定义的列表视图是无用的,我可以把它直接放在我的屏幕上,那么你认为呢 屏幕截图在我问题的底部 请帮帮我,因为我已经被它弄得头晕目眩,不再编码了 自定义列表视图 class CustomListView_issues extends StatelessWidget { final List<Issue> issues; CustomListView_issues(
class CustomListView_issues extends StatelessWidget {
final List<Issue> issues;
CustomListView_issues(this.issues);
Widget build(context) {
return ListView.builder(
shrinkWrap: true,
itemCount: issues.length,
itemBuilder: (context, int currentIndex) {
return Stack(
children: <Widget>[
Container(
width:double.infinity,
color: Colors.grey[50],
child: createViewItem(issues[currentIndex], context)
)
],
);
},
);
}
Widget createViewItem(Issue issue, BuildContext context) {
return new Container(
decoration: BoxDecoration(
color: Colors.grey[50],
),
child: ListTile(
title: new Card(
elevation: 0,
child: new Container(
color: Colors.grey[50],
width: 100,
child: Column(
children: <Widget>[
_getListTile(issue.issueNote, issue.image)
],
),
),
)
)
);
}
Widget _getListTile(issueNote,image){
return new Container(
width:double.infinity,
color: Colors.grey[50],
// height: 50.0,
child: new Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
_getIssueNoteWidget(issueNote),
_getImgWidget(image)
],
),
);
}
Widget _getIssueNoteWidget(String description){
return new Container(
width: 200,
margin: new EdgeInsets.only(top: 5),
child: Text(description, maxLines: 3 ,style: new TextStyle(fontSize: 15))
);
}
Widget _getImgWidget(String url){
return new Container(
width: 50.0,
height: 30.0,
child: new ClipRRect(
borderRadius: new BorderRadius.only(topLeft: const Radius.circular(1.0),bottomLeft: const Radius.circular(6.0)),
child: new Image.asset('images/place_holder.jpg')
),
);
}
}
//end class customListView
看看结果
如果可以的话,请帮忙
编辑:listview高度不是固定的,它可能有1个子项,也可能有10个子项这是因为您将
展开的
包裹在listview
周围。如果删除展开的列表,则列表视图将只占用必要的空间
Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Container(
// .... codes
),
_getExpanded(),
Container(
child:Column(
children: [
Text("Address"),
],
)
),
],
),
这是因为您在列表视图
周围包装了展开的
。如果删除展开的列表,则列表视图将只占用必要的空间
Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Container(
// .... codes
),
_getExpanded(),
Container(
child:Column(
children: [
Text("Address"),
],
)
),
],
),
将列表视图
包装在容器中
您可以将列表视图
包装在容器
小部件中,并设置固定高度:
Widget build(context) {
return Container(
height: 100px //here you set desired height
ListView.builder(
shrinkWrap: true,
itemCount: issues.length,
itemBuilder: (context, int currentIndex) {
return Stack(
children: <Widget>[
Container(
width:double.infinity,
color: Colors.grey[50],
child: createViewItem(issues[currentIndex], context)
)
],
);
},
),
);
}
小部件构建(上下文){
返回容器(
高度:100px//在这里您可以设置所需的高度
ListView.builder(
收缩膜:对,
itemCount:issues.length,
itemBuilder:(上下文,int currentIndex){
返回堆栈(
儿童:[
容器(
宽度:double.infinity,
颜色:颜色。灰色[50],
子项:createViewItem(问题[currentIndex],上下文)
)
],
);
},
),
);
}
将列表视图
包装在容器中
您可以将列表视图
包装在容器
小部件中,并设置固定高度:
Widget build(context) {
return Container(
height: 100px //here you set desired height
ListView.builder(
shrinkWrap: true,
itemCount: issues.length,
itemBuilder: (context, int currentIndex) {
return Stack(
children: <Widget>[
Container(
width:double.infinity,
color: Colors.grey[50],
child: createViewItem(issues[currentIndex], context)
)
],
);
},
),
);
}
小部件构建(上下文){
返回容器(
高度:100px//在这里您可以设置所需的高度
ListView.builder(
收缩膜:对,
itemCount:issues.length,
itemBuilder:(上下文,int currentIndex){
返回堆栈(
儿童:[
容器(
宽度:double.infinity,
颜色:颜色。灰色[50],
子项:createViewItem(问题[currentIndex],上下文)
)
],
);
},
),
);
}
删除并展开,指定要展开的高度container@Fatimaayaa但是高度不是固定的,可能listview有3个子项,或者10使用Flexible
而不是expand
remove expand,并指定要扩展的高度container@Fatimaayaa但是高度不是固定的,可能listview有3个子项,或者10使用Flexible
而不是Expanded
如果在listview
中有很多项,这不是一个好的解决方案底部的RenderFlex溢出了XXX个像素
。确实,您必须使用SingleChildScrollView包装您的列,然后我们还可以使用Flexible(child:_getExpanded())
我使用Flexible,高度太小,最好的方法是使用SingleChildScrollView删除展开和换行列如果在列表视图中有很多项,这不是一个好的解决方案底部的RenderFlex溢出了XXX个像素
。确实,您必须使用SingleChildScrollView包装您的列,然后我们还可以使用Flexible(child:_getExpanded())
我使用Flexible,高度太小,最好的方法是使用SingleChildScrollView删除展开并包装列