使用 Staggered Grid View 时 Flutter "Incorrect use of ParentDataWidget."~@_@
Flutter "Incorrect use of ParentDataWidget." when using Staggered Grid View~ @_@
@_@
我正在考虑让 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 小部件内使用。
在您的第一个代码片段中,删除容器内的第一个扩展小部件并包装您的列,但您可以保留第二个包装行的扩展小部件,因为这个扩展在列内,然后是错误应该离开。
@_@
我正在考虑让 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 小部件内使用。
在您的第一个代码片段中,删除容器内的第一个扩展小部件并包装您的列,但您可以保留第二个包装行的扩展小部件,因为这个扩展在列内,然后是错误应该离开。