Заполнение DataTable с помощью Firestore и Flutter (используя StreamBuilder) - PullRequest
0 голосов
/ 07 июня 2018

Как заполнить DataTable с помощью 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),

              );
            },
          )

Я не смог найти способ (например, встроенный построитель) указать документИндекс для передачи в функцию _listOfRows или как получить доступ к текущему документу для каждого потока.

1 Ответ

0 голосов
/ 07 июня 2018

Я не знаю, какие данные поступают из вашего потока, но вот идея о том, как это сделать:

 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;
  }

Вы можете применить ту же логику для создания ячейки, или вы можете сделать это внутри первой функции карты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...