Как отсортировать список из FireStore - PullRequest
0 голосов
/ 18 декабря 2018

В моих документах в FireStore у каждого есть список строк.Когда я отображаю документ в приложении, я бы хотел отсортировать их по алфавиту.То, что я пытаюсь, не работает.

var words = document['list'].cast<String>();
words.sort(); // Outputs 'null'

При проверке в отладчике, когда я приводю список, объект имеет тип CastList, но я не могу найти какую-либо информацию оэто и попытка создать объект с этим объявленным типом говорит мне, что это неопределенный класс.Затем я попытался указать класс, который мне бы хотелось, чтобы он был:

List<String> words = document['list'].cast<String>();

Но он все равно выдает null, когда я пытаюсь сортировать.

Мои коллекции выглядят такCollection example

Я получаю все документы внутри lists и отображаю каждый из них в виде списка.

StreamBuilder(
  stream: Firestore.instance.collection('lists').orderBy('releases').snapshots,
  builder: (context, snapshot) {
    if (!snapshot.hasData)
      return const Center(child: Text('Loading...'));

      return ListView.builder(
        itemCount: snapshot.data.documents.length,
        itemBuilder: (context, index) =>
            _buildRow(context, snapshot.data.documents[index], index),
      );
    },
)

  Widget _buildRow(BuildContext context, DocumentSnapshot document, int index) {
    var words = document['list'].cast<String>();
    var wordsString = words.toString();
    wordsString = wordsString.substring(1, wordsString.length - 1);

    return CheckboxListTile(
      title: Text(
        document['name'],
        style: _largerTextStyle,
      ),
      subtitle: Text(
        wordsString,
        style: _textStyle,
      ),
      value: _selectedIndices.contains(index),
      onChanged: (bool value) {
        setState(() {
          if (value) _selectedIndices.add(index);
          else _selectedIndices.remove(index);
        });
      },
    );
  }

1 Ответ

0 голосов
/ 18 декабря 2018

Это должно работать, не нужно звонить cast.

Редактировать: Я думаю, вы забыли извлечь данные.

List words = document.data['list'];
words.sort();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...