我目前有一个SingleChildScrollView作为父控件,一个GridView作为子控件之一。一切正常,但当GridView完成滚动时,滚动不会传递给父ScrollView。在横向方向上,GridView占据整个屏幕,因此用户只能滚动GridView。我怎样才能把卷轴给你呢?
SingleChildScrollView(
controller: _hideButtonController,
child: Container(
padding: EdgeInsets.only(bottom: 80.0), //padding for fab
child: Column(
children: <Widget>[
_previousWidgets(),
_gridWidget(),
],
),
),
);
3条答案
按热度按时间x8diyxa71#
在你的GridView中,像这样设置物理学,你可以开始了:
编辑:
这样做可能是资源密集型的,因为它在一次运行中生成所有项目,而不是在滚动时膨胀/生成项目,因此请确保您的网格或列表中没有大量数据。
5t7ly7z52#
您应该使用
CustomScrollView
而不是SingleChildScrollView
。CustomScrollView
是一个可以合并多种类型内容滚动视图。例如列表、网格或普通小部件。9ceoxa923#
我在这里回答了一个类似的问题:https://stackoverflow.com/a/76192690/11976596
你可以在下面找到相同的-
我有一个类似的问题,我有一个
GridView.builder
在一个SingleChildScrollView
。现在的问题是,你不能在SingleChildScrollView
内部创建一个GridView
,因为两者都会试图占用尽可能多的可用空间,这使得高度无限/无限。所以解决方案是用
SizedBox
PackageGridView
,我总是喜欢使用GridView.Builder
。现在实际的问题是,“当列表是动态的时,我如何知道
SizedBox
的大小?“因此,我编写了这段代码,其中包含根据
GridView
的childAspectRatio
属性动态计算SizedBox
高度的逻辑链接到工作 dart 要点-https://dartpad.dev/?id=05ba8804b19a2978a087c68622000a01
解释
count
是项目总数或itemCount
。itemsPerRow
是一行中的项目数或crossAxisCount
。ratio
是GridView
的childAspectRatio
属性,通常用于设置网格内项目的大小。ratio
计算为宽度/高度。horizontalPadding
是给GridView
的水平填充(在垂直列表的情况下)calcHeight
是SizedBox
的计算高度,这样在动态列表的情况下就不需要给予固定的高度。