Flutter 在网格中固定数量的小部件后添加分隔符

Flutter 在网格中固定数量的小部件后添加分隔符,flutter,dart,Flutter,Dart,我使用GridView.Builder显示了5000多幅图像。我正在从firebase实时数据库获取数据。最初我只获取50条记录,但当用户到达网格列表的底部时,我会获取另外50条记录,以此类推。代码运行良好 现在,在每200个图像之后,我想显示一个容器小部件,具有高度:250和宽度:MediaQuery.of(context).size.width。我该怎么做 StreamBuilder( stream: listStream, builder: (context

我使用
GridView.Builder
显示了5000多幅图像。我正在从firebase实时数据库获取数据。最初我只获取50条记录,但当用户到达网格列表的底部时,我会获取另外50条记录,以此类推。代码运行良好

现在,在每200个图像之后,我想显示一个
容器
小部件,具有
高度
:250和
宽度
MediaQuery.of(context).size.width
。我该怎么做

StreamBuilder(
        stream: listStream,
        builder: (context, AsyncSnapshot<List<WatchFace>> snapshot) {
          if (!snapshot.hasData) {
            return Center(child: CircularProgressIndicator());
          } else {
            return GridView.builder(
                itemCount: snapshot.data.length,
                gridDelegate: 
                SliverGridDelegateWithFixedCrossAxisCount(
                  crossAxisCount: 2,
                  mainAxisSpacing: 1,
                  crossAxisSpacing: 1,
                  childAspectRatio: MediaQuery.of(context).size.width /
                      (MediaQuery.of(context).size.height / 1.3),
                ),
                controller: _controller,
                itemBuilder: (BuildContext context, int index) {
                  return Padding(
                    padding:
                        const EdgeInsets.symmetric(vertical: 2, horizontal: 3),
                    child: Container(
                      decoration: BoxDecoration(
                        border:
                            Border.all(color: Colors.pinkAccent, width: 0.8),
                        borderRadius: BorderRadius.circular(8),
                      ),
                      child: Center(
                        child: Text('${snapshot.data[index].date}'), // Later I will display network image here.
                      ),
                    ),
                  );
                });
          }
        },
      ),
StreamBuilder(
流:listStream,
生成器:(上下文,异步快照){
如果(!snapshot.hasData){
返回中心(子项:CircularProgressIndicator());
}否则{
返回GridView.builder(
itemCount:snapshot.data.length,
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(
交叉轴计数:2,
主轴间距:1,
横轴间距:1,
childAspectRatio:MediaQuery.of(context).size.width/
(MediaQuery.of(context.size.height/1.3),
),
控制器:_控制器,
itemBuilder:(构建上下文,int索引){
返回填充(
衬垫:
常数边集对称(垂直:2,水平:3),
子:容器(
装饰:盒子装饰(
边界:
边框。全部(颜色:Colors.pinkAccent,宽度:0.8),
边界半径:边界半径。圆形(8),
),
儿童:中心(
child:Text('${snapshot.data[index].date}'),//稍后我将在这里显示网络图像。
),
),
);
});
}
},
),
这应该可以:

  • 列(mainAxisSize:mainAxisSize.min)包装您的项目
  • 把这个放在项目后面:
  • 编辑:刚刚记住了
    GridView
    childAspectRatio
    东西。它将强制每个单元格的大小,因此无法添加空间。你可能想看看

    if(index != 0 && index % 200 == 0)
      YourContainer(),