Flutter 如何控制飞灰列表视图的高度

Flutter 如何控制飞灰列表视图的高度,flutter,flutter-listview,Flutter,Flutter Listview,listview占据了整个页面,而它的内容占页面的25%,我想在它下面放一些东西 如何控制它的高度,我认为自定义的列表视图是无用的,我可以把它直接放在我的屏幕上,那么你认为呢 屏幕截图在我问题的底部 请帮帮我,因为我已经被它弄得头晕目眩,不再编码了 自定义列表视图 class CustomListView_issues extends StatelessWidget { final List<Issue> issues; CustomListView_issues(

listview占据了整个页面,而它的内容占页面的25%,我想在它下面放一些东西

如何控制它的高度,我认为自定义的列表视图是无用的,我可以把它直接放在我的屏幕上,那么你认为呢

屏幕截图在我问题的底部

请帮帮我,因为我已经被它弄得头晕目眩,不再编码了

自定义列表视图


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删除展开并包装列