首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListView成长为大

ListView成长为大
EN

Stack Overflow用户
提问于 2020-06-08 21:47:14
回答 1查看 304关注 0票数 2

我尝试展示一些小部件,包括一个ListView。我想让ListView填满可用的空间。如果ListView内容要更大,则应该是可滚动的。目前,ListView太大了,小部件从屏幕上长出来了。

代码语言:javascript
复制
...
body: Column(mainAxisAlignment: MainAxisAlignment.start, children: [
        Card(
          child: Padding(
            padding: const EdgeInsets.all(2.0),
            child: Column(children: [
              Text('Text'),
              ListView.builder(
                shrinkWrap: true,
                physics: ClampingScrollPhysics(),
                itemBuilder: (BuildContext context, int index) => actionWidgetList[index],
                itemCount: actionList.length,
              ),
            ]),
          ),
        ),
        rangeInitialized
            ? Container(
                alignment: Alignment.bottomCenter,
                width: MediaQuery.of(context).size.width,
                height: MediaQuery.of(context).size.width,
                child: another.widget,
              )
            : SizedBox(),
      ]),
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-09 06:47:47

如果是小部件,是较大布局的一部分,您可能知道ListView的最大高度

代码语言:javascript
复制
Widget build(BuildContext context) {
  return Column(
    mainAxisAlignment: MainAxisAlignment.start,
    children: [
      Card(
        child: Padding(
          padding: const EdgeInsets.all(2.0),
          child: Column(
            children: [
              Text('Text'),
              ConstrainedBox(
                constraints: BoxConstraints(
                  maxHeight: 100
                ),
                child: ListView.builder(
                  shrinkWrap: true,
                  physics: ClampingScrollPhysics(),
                  itemBuilder: (BuildContext context, int index) =>
                      actionWidgetList[index],
                  itemCount: actionList.length,
                ),
              ),
            ],
          ),
        ),
      ),
      rangeInitialized
        ? Container(
            alignment: Alignment.bottomCenter,
            width: MediaQuery.of(context).size.width,
            height: MediaQuery.of(context).size.width,
            child: another.widget,
          )
        : SizedBox(),
    ],
  );
}

如果布局需要填充整个屏幕,则可以使用灵活的小部件。

代码语言:javascript
复制
   Widget build(BuildContext context) {
  return Column(
    mainAxisAlignment: MainAxisAlignment.start,
    children: [
      Flexible(
        child: Card(
          child: Padding(
            padding: const EdgeInsets.all(2.0),
            child: Column(
              children: [
                Text('Text'),
                Flexible(
                  child: ListView.builder(
                    // shrinkWrap: true,
                    physics: ClampingScrollPhysics(),
                    itemBuilder: (BuildContext context, int index) =>
                        actionWidgetList[index],
                    itemCount: actionList.length,
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
      rangeInitialized
        ? Container(
            alignment: Alignment.bottomCenter,
            width: MediaQuery.of(context).size.width,
            height: MediaQuery.of(context).size.width,
            child: another.widget,
          )
        : SizedBox(),
    ],
  );
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62271694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档