将静态项附加到从数据库数据生成的ListView.builder

将静态项附加到从数据库数据生成的ListView.builder,listview,flutter,static,Listview,Flutter,Static,我从firestore数据库中获取了一些数据,利用这些数据我创建了一个显示我的数据的列表视图 我想在这个列表的底部附加3个不同于生成的静态项 我创建列表的代码是: child: StreamBuilder<QuerySnapshot>( stream: Firestore.instance .collection('users').document(userAdminId) .collection('events') .where('ope

我从firestore数据库中获取了一些数据,利用这些数据我创建了一个显示我的数据的列表视图

我想在这个列表的底部附加3个不同于生成的静态项

我创建列表的代码是:

child: StreamBuilder<QuerySnapshot>(
  stream: Firestore.instance
      .collection('users').document(userAdminId)
      .collection('events')
        .where('operatore', isEqualTo: _user)
      .snapshots(),
  builder: (BuildContext context,
      AsyncSnapshot<QuerySnapshot> snapshot) {
    if (snapshot.hasError)
      return Text('Error: ${snapshot.error}');
    switch (snapshot.data) {
      case null:
        return Container();
      default:
        return ListView.builder(
          itemCount: snapshot.data.documents.length,
          itemBuilder: (context, index) {
            final item = snapshot.data.documents[index];
            final itemID =
                snapshot.data.documents[index].documentID;
            final list =
                snapshot.data.documents;
            return Card(
                         ...

                        },
                      );
                  }
                },
              ),

如果我只得到一个事件:


[event1]
[camera]
[media]
[friends]

我通过
SliverList
小部件解决了这个问题

此代码是一个示例:

Widget buildGridFilesToExport() {
  return new StreamBuilder(
    stream: Firestore.instance
        .collection('users')
        .document(dataUserGlobal.userAdminId)
        .collection('events')
        .document(dataUserGlobal.eventId)
        .snapshots(),
    builder: (context, snapshot) {
      print(snapshot);
      if (snapshot.hasError) return new Text('Error: ${snapshot.error}');
      switch (snapshot.connectionState) {
        case ConnectionState.waiting:
          return dataUserGlobal.showLoading(dataUserGlobal.purple);
        default:
          List videosList = snapshot.data['thumbnailsUrl'];
          return videosList != null ?

          CustomScrollView(
            slivers: [
              SliverGrid(
                gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
                  maxCrossAxisExtent: 200.0,
                  mainAxisSpacing: 10.0,
                  crossAxisSpacing: 10.0,
                  childAspectRatio: 1,
                ),
                delegate: SliverChildBuilderDelegate((context, index) {
                  return Container(
                      padding: EdgeInsets.all(5.0),
                      child: Column(
                        children: <Widget>[
                          Expanded(
                              flex: 7,
                              child: Stack(
                                children: <Widget>[
                                  Container(
                                    margin:
                                    EdgeInsets.only(bottom: 2.0),
                                    decoration: BoxDecoration(
                                      borderRadius: BorderRadius.all(
                                          Radius.circular(5.0)),
                                      image: DecorationImage(
                                        image: NetworkImage(snapshot
                                            .data['thumbnailsUrl']
                                        [index]),
                                        fit: BoxFit.cover,
                                      ),
                                    ),
                                  ),

                                ],
                              )),

                        ],
                      ));
                }, childCount: snapshot.data['thumbnailsUrl'].length),
              ),
              SliverList(
                delegate: SliverChildListDelegate([
                  closeEvent(),
                ]),
              )
            ],
          )
              :
          Center(
              child: Container(
                width: 250,
                child: Text(
                  'Ancora nessun video!\nCarica i video dalla sezione media, oppure vai nella sezione amici e seleziona i video da spostare qui!',
                  textAlign: TextAlign.center,
                  style: TextStyle(
                    fontFamily: 'acumin-pro',
                    fontSize: 22,
                  ),
                ),
              )
          );
      }
    },
  );
}
Widget buildGridFilesToExport(){
返回新的StreamBuilder(
流:Firestore.instance
.collection('用户')
.document(dataUserGlobal.userAdminId)
.collection(“事件”)
.document(dataUserGlobal.eventId)
.snapshots(),
生成器:(上下文,快照){
打印(快照);
if(snapshot.hasError)返回新文本('Error:${snapshot.Error}');
交换机(快照.连接状态){
案例连接状态。正在等待:
返回dataUserGlobal.showLoading(dataUserGlobal.purple);
违约:
List videosList=snapshot.data['thumbnailsUrl'];
返回视频列表!=空?
自定义滚动视图(
条子:[
银栅(
gridDelegate:SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent:200.0,
主轴间距:10.0,
交叉轴间距:10.0,
儿童方面:1,
),
委托:SliverChildBuilderDelegate((上下文,索引){
返回容器(
填充:所有边缘设置(5.0),
子:列(
儿童:[
扩大(
弹性:7,
子:堆栈(
儿童:[
容器(
保证金:
仅限边缘设置(底部:2.0),
装饰:盒子装饰(
borderRadius:borderRadius.all(
圆半径(5.0)),
图像:装饰图像(
图像:网络图像(快照)
.data['thumbnailsUrl']
[索引],
适合:BoxFit.cover,
),
),
),
],
)),
],
));
},childCount:snapshot.data['thumbnailsUrl'].length),
),
银表(
委托:SliverChildListDelegate([
closeEvent(),
]),
)
],
)
:
居中(
子:容器(
宽度:250,
子:文本(
“Ancora nessun视频!\n哥斯达黎加视频达拉斯媒体,奥普瓦伊内拉媒体,我的朋友和我的朋友视频!”,
textAlign:textAlign.center,
样式:TextStyle(
fontFamily:“acumin pro”,
尺寸:22,
),
),
)
);
}
},
);
}
一些小把戏,

[event1]
[camera]
[media]
[friends]
Widget buildGridFilesToExport() {
  return new StreamBuilder(
    stream: Firestore.instance
        .collection('users')
        .document(dataUserGlobal.userAdminId)
        .collection('events')
        .document(dataUserGlobal.eventId)
        .snapshots(),
    builder: (context, snapshot) {
      print(snapshot);
      if (snapshot.hasError) return new Text('Error: ${snapshot.error}');
      switch (snapshot.connectionState) {
        case ConnectionState.waiting:
          return dataUserGlobal.showLoading(dataUserGlobal.purple);
        default:
          List videosList = snapshot.data['thumbnailsUrl'];
          return videosList != null ?

          CustomScrollView(
            slivers: [
              SliverGrid(
                gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
                  maxCrossAxisExtent: 200.0,
                  mainAxisSpacing: 10.0,
                  crossAxisSpacing: 10.0,
                  childAspectRatio: 1,
                ),
                delegate: SliverChildBuilderDelegate((context, index) {
                  return Container(
                      padding: EdgeInsets.all(5.0),
                      child: Column(
                        children: <Widget>[
                          Expanded(
                              flex: 7,
                              child: Stack(
                                children: <Widget>[
                                  Container(
                                    margin:
                                    EdgeInsets.only(bottom: 2.0),
                                    decoration: BoxDecoration(
                                      borderRadius: BorderRadius.all(
                                          Radius.circular(5.0)),
                                      image: DecorationImage(
                                        image: NetworkImage(snapshot
                                            .data['thumbnailsUrl']
                                        [index]),
                                        fit: BoxFit.cover,
                                      ),
                                    ),
                                  ),

                                ],
                              )),

                        ],
                      ));
                }, childCount: snapshot.data['thumbnailsUrl'].length),
              ),
              SliverList(
                delegate: SliverChildListDelegate([
                  closeEvent(),
                ]),
              )
            ],
          )
              :
          Center(
              child: Container(
                width: 250,
                child: Text(
                  'Ancora nessun video!\nCarica i video dalla sezione media, oppure vai nella sezione amici e seleziona i video da spostare qui!',
                  textAlign: TextAlign.center,
                  style: TextStyle(
                    fontFamily: 'acumin-pro',
                    fontSize: 22,
                  ),
                ),
              )
          );
      }
    },
  );
}