使用交错网格视图时颤振"Incorrect use of ParentDataWidget."~ @_@


@_@

我想让GridView中的小部件根据其动态内容高度具有不同的高度,这些小部件是内部带有扩展列的容器。但它给了我这个错误";ParentDataWidget的错误使用">

小部件如下所示:

Container(
decoration: BoxDecoration(
color: someColor,
borderRadius: BorderRadius.circular(17),
),
child: Expanded(
child: Column(
children: [
ClipRRect(
borderRadius: BorderRadius.circular(17),
child: AspectRatio(
aspectRatio: 5 / 3,
child: Image.network(someImageUrl, fit: BoxFit.cover),
),
),
SizedBox(height: 10),
Text('Group name'),
Text('Group desc'),
SizedBox(height: 10),
Expanded(
child: Row(
children: List.generate(
_group.popIds.length,
(_) => SizedBox(width: 50, height: 50),
),
),
),
Text('Hello')
],
),
),
);

这就是放置这些小部件的屏幕:

Scaffold(
body: Padding(
padding:
const EdgeInsets.only(left: 17.0, right: 17.0, top: 50),
child: StaggeredGridView.countBuilder(
crossAxisCount: 2,
mainAxisSpacing: 10,
crossAxisSpacing: 20,
itemCount: 50,
itemBuilder: (context, index) => GroupItem(),
staggeredTileBuilder: (index) => StaggeredTile.fit(1),
),
),
);

错误信息如下:

**ParentDataWidget的使用不正确。

ParentDataWidget Expanded(flex:1(希望将FlexParentData类型的ParentData应用于RenderObject,RenderObject已设置为接受不兼容类型ParentData的ParentData。**

有没有什么天才可以帮我解决这个问题,因为我已经挣扎了一整天了!~@_@

这是因为您在容器中使用Expanded。Expanded只能在Column、Row或Flex小部件内部使用。

在您的第一个代码片段中,删除容器内并包装列的第一个Expanded小部件,但您可以保留包装行的第二个Expander小部件,因为该扩展位于列内,然后错误应该会消失。