Expanded 内的GridView 不可见,仅在使用指定高度的Container 时可见

Posted

技术标签:

【中文标题】Expanded 内的GridView 不可见,仅在使用指定高度的Container 时可见【英文标题】:GridView inside Expanded not visible, only visible when using Container with a specified height 【发布时间】:2020-12-10 11:44:29 【问题描述】:

我有一个网格视图,我想在非特定高度容器中显示它。但是,只有当我使用具有指定高度的容器时,才会显示网格视图。当我将 Container 更改为 Expanded 或 Flexible 时,GridView 变得不可见。

工作代码:

return Container( //using container
  height: 250,    //with a specific height
  child: GridView.count(
    primary: false,
    padding: const EdgeInsets.all(0.0),
    crossAxisSpacing: 10.0,
    crossAxisCount: 2,
    children: <Widget>[
      const Text('He\'d have you all unravel at the'),
      const Text('Heed not the rabble'),
      const Text('Sound of screams but the'),
      const Text('Who scream'),
    ],
  ),
);

非工作代码:

return Expanded(
  child: GridView.count(
    primary: false,
    padding: const EdgeInsets.all(0.0),
    crossAxisSpacing: 10.0,
    crossAxisCount: 2,
    children: <Widget>[
      const Text('He\'d have you all unravel at the'),
      const Text('Heed not the rabble'),
      const Text('Sound of screams but the'),
      const Text('Who scream'),
    ],
  ),
);

【问题讨论】:

【参考方案1】:

gridview的父widget需要有一定的高度。 height: MediaQuery.of(context).size.height 如果容器不可滚动或已发布类似答案,则为选项之一,请参阅link。

【讨论】:

这将占据整个屏幕。我的 gridview 只是我屏幕上的一个部分。我不希望它占据整个屏幕的高度,而是让它在需要时扩展。 尝试使用return SizedBox.expand(child: Container(child: GridView.count( 【参考方案2】:

你必须扩展成一个 Column Widget,它会占用所有可用的垂直空间

return Column(
    children:<Widget>[
      Expanded(
        child: GridView.count(
          primary: false,
          padding: const EdgeInsets.all(0.0),
          crossAxisSpacing: 10.0,
          crossAxisCount: 2,
          children: <Widget>[
            const Text('He\'d have you all unravel at the'),
            const Text('Heed not the rabble'),
            const Text('Sound of screams but the'),
            const Text('Who scream'),
          ],
        ),
      )
    ]
);

【讨论】:

还是不行。整个事情都被屏蔽了。 @NewbieCoder 您是否将此小部件包装到另一个小部件(可能是中心)中?我的意思是,我的树是Scaffold(...Column(...Expanded(...GridView.count(...))))

以上是关于Expanded 内的GridView 不可见,仅在使用指定高度的Container 时可见的主要内容,如果未能解决你的问题,请参考以下文章

Windows 10 UWP - 不可见时没有 DataContext 的 GridView 项目

Flutter - 保留不可见的gridview子项

GridView.Count在不固定父容器高度的情况下不可见

GridView 行为怪异;重复文本视图

当数据网格行在网格中不可见时,如何避免空引用异常?

在 Gridview 内的 Gridview 上显示 Json