Flutter 设置Container高度自适应GridView 或Listview

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter 设置Container高度自适应GridView 或Listview相关的知识,希望对你有一定的参考价值。

参考技术A 在做移动端的时候, 很多时候会需要下图所示的需求,如图 自己所示:

先进行需求分析, 这个模块可以设计成Container包含GridView,  GridView中子内容个数由后台数据控制, 但是在直接写Container包含GridView控件时会出现 "Failed assertion: line 1920 pos 12: 'hasSize'" 有关的错误, 如果直接给Container一个高度的话, 又不满足我们的需求.

我们想要的结果是由数据控制GridView的个数, 而Container大小跟随GridView个数的变化而变化, 而不去直接设置Container的大小, 

因此,我们点开GridView的api发现, 有一个shrinkWrap属性,  设置shrinkWrap:true即可, 运行一下即可达到效果, 但是又会发现另一个问题, 虽然Container大小可以自适应了, 但是里面的内容又会在局部进行滚动, 而我们的想法是想让内容在整个屏幕中滚动, 并没有局部滚动的效果, 因此, 我们设置另一个属性physics: NeverScrollableScrollPhysics()

在GridView.builder中添加

Container跟随GridView内容变化高度: shrinkWrap:true,    

取消滚动效果: physics:NeverScrollableScrollPhysics(),

以上是关于Flutter 设置Container高度自适应GridView 或Listview的主要内容,如果未能解决你的问题,请参考以下文章

【Flutter】ListView、GridView高度自适应并随页面滚动

初试swiper插件-让页面自适应高度

Container 中的固定高度在 Flutter 中不起作用

如何让 Flutter 小部件适应不同的屏幕尺寸

Flutter实战巧之-showModalBottomSheet 高度自适应

Flutter 自适应高度bottom sheet