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

9 浏览
0 Comments

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

我有一个GridView,我想在一个高度不确定的容器中显示它。然而,只有当我使用具有指定高度的容器时,GridView才会显示出来。当我将容器更改为Expanded或Flexible时,GridView会变得不可见。

有效的代码:

return Container( //使用容器

height: 250, //具有指定高度

child: GridView.count(

primary: false,

padding: const EdgeInsets.all(0.0),

crossAxisSpacing: 10.0,

crossAxisCount: 2,

children: [

const Text('他会让你解开所有的困扰'),

const Text('不要理会乌合之众'),

const Text('只听到尖叫的声音'),

const Text('那些尖叫的人'),

],

),

);

无效的代码:

return Expanded(

child: GridView.count(

primary: false,

padding: const EdgeInsets.all(0.0),

crossAxisSpacing: 10.0,

crossAxisCount: 2,

children: [

const Text('他会让你解开所有的困扰'),

const Text('不要理会乌合之众'),

const Text('只听到尖叫的声音'),

const Text('那些尖叫的人'),

],

),

);

0
0 Comments

问题原因:在GridView中设置了shrinkWrap属性为true。

解决方法:使用Container包裹GridView,并指定一个固定的高度。

在Flutter中,GridView是用于显示网格布局的控件。有时候我们会遇到一个问题,即当将GridView放在Expanded中时,GridView可能会变得不可见。解决这个问题的方法是使用Container来包裹GridView,并指定一个具体的高度。

在这个问题中,问题的根源是在GridView中设置了shrinkWrap属性为true。shrinkWrap属性的作用是根据内容的大小来确定GridView的大小。当GridView放在Expanded中时,Expanded会尝试将GridView的大小调整为适应可用空间的最大值。然而,由于shrinkWrap属性为true,GridView会根据内容的大小来确定自己的大小,这可能会导致GridView变得不可见。

为了解决这个问题,我们需要使用Container来包裹GridView,并指定一个具体的高度。通过指定一个具体的高度,我们可以确保GridView的大小不会受到shrinkWrap属性的影响,从而解决GridView在Expanded中不可见的问题。

下面是解决这个问题的代码示例:

Container(

height: 200, // 指定一个具体的高度

child: GridView.builder(

gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(

crossAxisCount: 2,

),

itemCount: 4,

itemBuilder: (BuildContext context, int index) {

return Container(

color: Colors.blue,

margin: EdgeInsets.all(10),

);

},

),

);

通过将GridView放在一个具有指定高度的Container中,我们可以确保GridView在Expanded中可见。

总结起来,当我们在使用GridView时,如果遇到GridView在Expanded中不可见的问题,我们可以通过使用Container来包裹GridView,并指定一个具体的高度来解决这个问题。

0
0 Comments

GridView inside Expanded not visible, only visible when using Container with a specified height

在使用Flutter进行布局时,有时候会遇到GridView在Expanded内不可见的问题,只有在使用指定高度的Container时才可见。本文将探讨这个问题的原因以及解决方法。

问题原因:

GridView的父部件需要有一个指定的高度。如果父部件没有指定高度,GridView将无法正常显示。

解决方法:

一种解决方法是使用一个具有特定高度的Container作为GridView的父部件。可以通过设置Container的高度来解决GridView不可见的问题。例如,可以使用以下代码来指定Container的高度为屏幕的高度:

Container(

height: MediaQuery.of(context).size.height,

child: GridView.count(

// GridView的其他属性

),

)

这样,GridView将占据整个屏幕的高度,并且可以正常显示。

然而,有时候我们并不希望GridView占据整个屏幕的高度,而是希望它在需要时可以扩展。为了实现这一点,可以尝试使用SizedBox.expand作为GridView的父部件。SizedBox.expand会自动扩展以适应可用空间。以下是使用SizedBox.expand的示例代码:

return SizedBox.expand(

child: Container(

child: GridView.count(

// GridView的其他属性

),

),

);

这样,GridView将在需要时自动扩展,以适应可用空间。

当我们遇到GridView在Expanded内不可见的问题时,可以通过为GridView的父部件设置指定的高度来解决。另外,如果我们希望GridView在需要时可以自动扩展,可以尝试使用SizedBox.expand作为GridView的父部件。

参考链接:

[https://stackoverflow.com/a/48410521/8312074](https://stackoverflow.com/a/48410521/8312074)

0
0 Comments

问题的出现原因:

问题是GridView控件在Expanded控件内不可见,只有在使用具有指定高度的Container控件时才可见。在给定的代码中,将GridView控件放置在Expanded控件中,但是没有将Expanded控件放置在Column控件中。

解决方法:

在给定的代码中,需要将Expanded控件放置在Column控件中,以便将可用的垂直空间传递给GridView控件。

以下是修改后的代码:

return Column(

children: [

Expanded(

child: GridView.count(

primary: false,

padding: const EdgeInsets.all(0.0),

crossAxisSpacing: 10.0,

crossAxisCount: 2,

children: [

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"),

],

),

),

],

);

这样修改后,GridView控件将可见,并且可以正常显示在屏幕上。

0