首页 > 解决方案 > 如何在颤动的同一页面上向gridview添加其他组件

问题描述

...
            if (snapshot.data == null) {
              return Container(
                  child: Center(
                child: Text("Loading..."),
              ));
            } else {
              return GridView.builder(
                  itemCount: snapshot.data.length,
                  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                      crossAxisCount: 3),
                  itemBuilder: (context, index) => Card(
                          child: GridTile(
                        child: Center(
                          child: Text(snapshot.data[index].service_type),
                        ),
                      )));
            }
...

当这段代码执行时,结果如下,

在此,我需要在网格顶部添加一个图像组件。请帮助我实现这一目标。下图是预期的结果设计。

标签: flutterdartgridviewlayoutflutter-layout

解决方案


在大列表上使用 shrinkWrap 是一种不好的做法,当您想要在其上方或下方使用扩展时,您应该将 GridView/ListView 包装起来,也不要嵌套这样的滚动视图。您应该改用 CustomScrollView 或 NestedScrollView。他们在文档中所说的。

收缩包裹滚动视图的内容比扩展到最大允许大小要昂贵得多,因为内容可以在滚动期间扩展和收缩,这意味着每当滚动位置发生变化时都需要重新计算滚动视图的大小。


推荐阅读