【问题标题】:Filling a DataTable with Firestore and Flutter (using StreamBuilder)使用 Firestore 和 Flutter 填充 DataTable(使用 StreamBuilder)
【发布时间】:2018-11-16 21:12:13
【问题描述】:

如何使用 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 函数的文档索引,或者如何访问每个流的当前文档。

【问题讨论】:

    标签: datatable dart google-cloud-firestore flutter


    【解决方案1】:

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

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

    您希望构建器方法返回 List&lt;DataRow&gt;

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

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

    【讨论】:

    • 工作就像一个魅力!非常感谢! @树
    • 我在 PaginatedDataTable 中使用了相同的逻辑,但是通过点击列标题进行排序不起作用。排序对你有用吗?
    • 谢谢你!您能否澄清"someDataYouWantToProcessForCellData" 的含义或提供一个示例?无论我输入什么,我都会收到错误没有为类型“DocumentSnapshot”定义运算符“[]”
    • 在回答我之前的评论时,这里有一个可以用来代替“someDataYouWantToProcessForCellData”占位符的示例:return new DataRow(cells: [ DataCell(Text(documentSnapshot.data()['Name'].toString())),,其中Name 是我的 Firestore 文档中的一个字段。
    • 请你告诉mw如何为_createCellsForElement@Tree编写代码
    猜你喜欢
    • 2021-01-06
    • 2020-10-01
    • 2020-03-12
    • 2021-02-07
    • 2023-04-01
    • 2021-08-17
    • 2020-01-22
    • 2014-10-12
    • 2014-08-22
    相关资源
    最近更新 更多