首页 > 解决方案 > 如何从 GridView 中删除内部滚动?

问题描述

我正在尝试使用一个滚动的 ListView。我希望能够向下滚动并查看每个小部件。目前,我在 GridView 之前有多个小部件。问题在于 GridView 有自己的滚动条。我想要的一个很好的例子类似于 Instagram 个人资料页面。当您在 Instagram 个人资料页面中向下滚动时,每个元素都会向下滚动。没有嵌套的卷轴。

这是我当前的代码:

body: ListView(
children: <Widget>[
  ...
  ...
Container(
  child: GridView.count(
           crossAxisCount: 3,
           shrinkWrap: true,
           children: List.generate(100, (index) {
                  return Container(
                           alignment: Alignment.center,
                           margin: EdgeInsets.all(3.0),
                           height: MediaQuery.of(context).size.height,
                           child: FadeInImage.memoryNetwork(
                           placeholder: kTransparentImage,
                          image:'https://picsum.photos/${300}/${300}/',
                      ),
                    );
                  }),
                ),
              )
    ]
)

标签: androidiosgridviewflutterdart

解决方案


有嵌套滚动小部件,CustomScrollView它需要 Slivers 来实现您正在寻找的东西。SliverGrid 和 SliverList 是实现目标所需的:

Widget sliverScroll() {
    return CustomScrollView(
      slivers: <Widget>[
        SliverGrid(
          delegate: SliverChildBuilderDelegate((context, index) {
            return Container();
          }, childCount: 9),
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3),
        ),
        SliverList(
          delegate: SliverChildBuilderDelegate((context, index) {
            return Container();
          }, childCount: 6),
        ),
      ],
    );
  }

您可以根据需要自定义,更改订单或它,项目计数等


推荐阅读