Как отсортировать список из FireStore

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

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

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

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

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

Мои коллекции выглядят так Как отсортировать список из FireStore

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

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

не могли бы вы показать нам данные из пожарного склада? (сборник / документ)

diegoveloper 18.12.2018 20:04

@diegoveloper Добавил изображение.

Cody Harness 18.12.2018 20:12
1
2
1 821
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

List words = document.data['list'];
words.sort();

Это дает мне ноль.

Cody Harness 18.12.2018 20:39

как называется ваша коллекция и как вы называете? если вы напечатаете это: document ['list'] и выдадите null, значит ваш документ неверен

diegoveloper 18.12.2018 20:39

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

Cody Harness 18.12.2018 20:51

Это должно быть важно для тех, кто придет сюда в будущем: метод sort() не возвращает тип, поэтому его нельзя вызвать в строке объявления. Это была одна из моих проблем.

Cody Harness 18.12.2018 21:08

Другие вопросы по теме