RenderFlex子代有高度限制的问题

时间:2020-01-26 08:15:06

标签: flutter flutter-layout

我正在使用以下代码创建带有孩子的列表。

 return ListView.separated(
      scrollDirection: Axis.vertical,
      shrinkWrap: true,
      itemBuilder: (context, index) {
        return Card(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Flexible(
                fit: FlexFit.tight,
                flex: 1,
                child: ListTile(
                  leading: Image.asset( "/tray.png",width: 32.0,),
                  title: Text(packs[index]['name']),
                  trailing: IconButton(
                    onPressed: () {},
                    icon: Icon(
                      Icons.add,
                      color: Colors.yellow,
                    ),
                  ),
                ),
              ),
              Flexible(
                fit: FlexFit.loose,
                flex: 1,
                child: ListView(
                  scrollDirection: Axis.horizontal,
                  shrinkWrap: true,
                  children: <Widget>[],
                ),
              ),
            ],
          ),
        );
      },
      separatorBuilder: (context, index) => Divider(
        color: Colors.black,
      ),
      itemCount: packs.length,
    );

我收到以下错误。在其他应用程序中,我早些时候遇到过许多此类问题。但是我无法解决这个问题。

The following assertion was thrown during performLayout():
RenderFlex children have non-zero flex but incoming height constraints are unbounded.

RenderBox was not laid out: RenderFlex#41bc7 relayoutBoundary=up11 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
'package:flutter/src/rendering/box.dart':
Failed assertion: line 1691 pos 12: 'hasSize'
The relevant error-causing widget was: 
  Card file:///D:/apps/lib/tab_content.dart:49:16

1 个答案:

答案 0 :(得分:1)

问题是Card小部件没有大小,由hasSize错误指示。您可以通过使用Container或SizedBox小部件包装Card小部件并在其上设置高度和宽度属性,或使用Expanded小部件包装Card小部件来解决此问题。 这是有关扩展功能的快速视频:Widget of the Week - Expanded

编辑:检查了Flutter项目中的代码,但是当您将Card小部件包装在Expanded小部件中时,错误仍然存​​在。因此,请使用ContainerSizedBox或可以在其中明确设置宽度和高度的任何类型的小部件。