使用 Firestore 和 Flutter 填充数据表(使用 StreamBuilder)

Gus*_*tta 5 datatable dart flutter google-cloud-firestore

如何使用 StreamBuilder 填充数据表?

下面是我的代码:

          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),

              );
            },
          )
Run Code Online (Sandbox Code Playgroud)

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

Tre*_*ree 4

我不知道您的流中有哪些数据,但以下是有关如何执行此操作的想法:

 DataTable(
   rows: _createRows(snapshot.data),
 )
Run Code Online (Sandbox Code Playgroud)

您希望您的构建器方法返回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;
  }
Run Code Online (Sandbox Code Playgroud)

您可以应用相同的逻辑来创建单元格,也可以在第一个映射函数内执行此操作。