首页 文章

使用Firestore和Flutter填充DataTable(使用StreamBuilder)

提问于
浏览
2

如何使用StreamBuilder填充DataTable?

以下是我的代码:

new StreamBuilder(
            stream: widget._returnStreamWithActiveKeysOnly(),
            builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
              if (!snapshot.hasData) return new Text('Loading...');
              return new DataTable(
                columns: <DataColumn>[
                  new DataColumn(
                    label: Text('type'),
                    tooltip: 'Ordinary or service (1 day only, restricted time)',
                  ),
                  new DataColumn(label: Text('Key')),
                  new DataColumn(label: Text('Check-in')),
                  new DataColumn(label: Text('Check-out')),
                ],
                rows: _listOfRows(snapshot),

              );
            },
          )

我找不到一种方法(如内置构建器)来指示要传递给 _listOfRows 函数的文档索引,或者如何访问每个流的当前文档 .

1 回答

  • 0

    我不知道你的流来自哪些数据,但是这里有关于如何做到这一点的想法:

    DataTable(
       rows: _createRows(snapshot.data),
     )
    

    您希望构建器方法返回 List<DataRow>

    List<DataRow> _createRows(QuerySnapshot snapshot) {
    
        List<DataRow> newList = snapshot.documents.map((DocumentSnapshot documentSnapshot) {
          return new DataRow(cells: _createCellsForElement(documentSnapshot["someDataYouWantToProcessForCellData"]));
        }).toList();
    
        return newList;
      }
    

    您可以为单元格创建应用相同的逻辑,也可以在第一个map函数中执行 .

相关问题