Flutter 在布局颤振的中间添加listview

Flutter 在布局颤振的中间添加listview,flutter,flutter-layout,Flutter,Flutter Layout,我想在页面中的其他项目之间显示我的listview。我现在的基本流程是这样的: AppBar Body: -Image -Title -IntroText -NEED LIST VIEW HERE 以下是我的小部件和布局: ListView _buildSectionList(List<Sections> sections, context) { print(sections.length); return ListView.builder( itemCount:

我想在页面中的其他项目之间显示我的listview。我现在的基本流程是这样的:

AppBar Body:
-Image
-Title
-IntroText
-NEED LIST VIEW HERE
以下是我的小部件和布局:

ListView _buildSectionList(List<Sections> sections, context) {
  print(sections.length);
  return ListView.builder(
    itemCount: sections.length,
    itemBuilder: (BuildContext context, int index) {
      return new Column(
        children: <Widget>[
          new ListTile(
            leading: Text(index.toString()),
            title: new Text(
              (sections[index].content),
              style: TextStyle(
                  fontSize: 18,
                  fontWeight: FontWeight.bold,
                  color: Colors.white),
            ),
          ),
          new Divider(
            height: 12.0,
            color: Colors.white,
          ),
        ],
      );
    },
  );
}
ListView\u buildSectionList(列出节,上下文){
印刷品(章节、长度);
返回ListView.builder(
itemCount:sections.length,
itemBuilder:(构建上下文,int索引){
返回新列(
儿童:[
新ListTile(
前导:文本(index.toString()),
标题:新文本(
(章节[索引].内容),
样式:TextStyle(
尺码:18,
fontWeight:fontWeight.bold,
颜色:颜色。白色),
),
),
新分隔器(
身高:12.0,
颜色:颜色,白色,
),
],
);
},
);
}
如果我只在主体中插入buildSectionList:它将很好地显示数据

但是,当我将其添加到下面的布局中时,会出现错误(布局下方):

儿童:[
填充物(
填充:仅限边缘设置(顶部:0.0,底部:15.0),
子对象:对齐(
对齐:alignment.centerLeft,
子:文本(
title.toUpperCase(),
样式:TextStyle(
尺寸:24,
fontWeight:fontWeight.bold,
颜色:颜色。黑色54),
textAlign:textAlign.left,
),
),
),
文本(landingpagecontent,样式:TextStyle(fontSize:18)),
_buildSectionList(节、上下文),
划船(
crossAxisAlignment:crossAxisAlignment.center,
textDirection:textDirection.rtl,
儿童:[
填充物(
填充:仅限边缘设置(顶部:15,底部:15),
孩子:InkWell(
子项:文本(“了解更多>”,
样式:TextStyle(fontSize:18)),
onTap:()异步{
var url=weblink;
如果(等待canLaunch(url)){
等待启动(url,forceWebView:false);
}否则{
抛出“无法启动$url”;
}
}),
),
],
),
],
I/flatter(29498):引发了另一个异常:RenderBox未布局:RenderFlex#4d43f relayoutBoundary=up14 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:RenderConstrainedBox#18160 relayoutBoundary=up13 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:RenderPadding#4486e relayoutBoundary=up12 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:_RenderSingleChildViewport#b4572 relayoutBoundary=up11 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:RenderRignorePointer#87d08 relayoutBoundary=up10 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:RenderManticsAnnotations#8fa89 relayoutBoundary=up9 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:RenderPointerListener#b9ffd relayoutBoundary=up8 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:RenderManticsGestureHandler#f3831 relayoutBoundary=up7 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:RenderPointerListener#fe472 relayoutBoundary=up6 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:_RenderScrollSemantics#6b201 relaytBoundary=up5 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:RenderPaintBoundary#da0f9 relayoutBoundary=up4 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:rendercastompaint#68715 relayoutBoundary=up3 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:RenderPaintBoundary#b7790 relayoutBoundary=up2 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:RenderCoratedBox#eb17f relayoutBoundary=up1 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE I/flatter(29498):引发了另一个异常:RenderBox未布局:rendercoratedbox#eb17f relayoutBoundary=up1


我尝试了Expanded()小部件,但也没有结果。有什么想法吗?谢谢

您可以尝试一下:

演示:

Widget buildBody(BuildContext context) {
    return Column(
      children: <Widget>[
        Container(
          color: Colors.pink,
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.all(16.0),
                child: Text("Image"),
              ),
            ],
          ),
        ),
        Container(
          color: Colors.orangeAccent,
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.all(16.0),
                child: Text("Text"),
              ),
            ],
          ),
        ),
        Expanded(
          child: _buildListView(),
        ),
        Container(
          color: Colors.cyanAccent,
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.all(16.0),
                child: Text("Bottom 1"),
              ),
              Padding(
                padding: const EdgeInsets.all(16.0),
                child: Text("Bottom 2"),
              ),
            ],
          ),
        )
      ],
    );
  }

  Widget _buildListView() {
    return ListView.separated(
      itemCount: 1000,
      itemBuilder: (context, index) {
        return Padding(
          padding: const EdgeInsets.all(16.0),
          child: Center(child: Text("Item ${index + 1}")),
        );
      },
      separatorBuilder: (context, index) {
        return Divider(
          height: 1,
        );
      },
    );
  }

代码:

Widget buildBody(BuildContext context) {
    return Column(
      children: <Widget>[
        Container(
          color: Colors.pink,
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.all(16.0),
                child: Text("Image"),
              ),
            ],
          ),
        ),
        Container(
          color: Colors.orangeAccent,
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.all(16.0),
                child: Text("Text"),
              ),
            ],
          ),
        ),
        Expanded(
          child: _buildListView(),
        ),
        Container(
          color: Colors.cyanAccent,
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.all(16.0),
                child: Text("Bottom 1"),
              ),
              Padding(
                padding: const EdgeInsets.all(16.0),
                child: Text("Bottom 2"),
              ),
            ],
          ),
        )
      ],
    );
  }

  Widget _buildListView() {
    return ListView.separated(
      itemCount: 1000,
      itemBuilder: (context, index) {
        return Padding(
          padding: const EdgeInsets.all(16.0),
          child: Center(child: Text("Item ${index + 1}")),
        );
      },
      separatorBuilder: (context, index) {
        return Divider(
          height: 1,
        );
      },
    );
  }
Widget buildBody(BuildContext){
返回列(
儿童:[
容器(
颜色:颜色。粉红色,
孩子:排(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
填充物(
填充:常数边集全部(16.0),
子项:文本(“图像”),
),
],
),
),
容器(
颜色:颜色