В моих документах на FireStore у каждой есть список строк. Когда я показываю документ в приложении, я хочу отсортировать их по алфавиту. То, что я пытаюсь, не работает.
var words = document['list'].cast<String>();
words.sort(); // Outputs 'null'
При проверке в отладчике, когда я преобразовываю список, объект имеет тип CastList
, но я не могу найти никакой информации об этом, и попытка создать объект с этим объявленным типом сообщает мне, что это неопределенный класс. Итак, я попытался указать класс, которым я хотел бы быть:
List<String> words = document['list'].cast<String>();
Но когда я пытаюсь отсортировать, он все равно выводит null
.
Я получаю все документы внутри 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 Добавил изображение.
Должно работать, звонить в cast
не надо.
Редактировать: Я думаю, вы забыли извлечь данные.
List words = document.data['list'];
words.sort();
Это дает мне ноль.
как называется ваша коллекция и как вы называете? если вы напечатаете это: document ['list'] и выдадите null, значит ваш документ неверен
Я понял, что полная иерархия документа может помочь, поэтому заменил изображение. Я также добавил код, который использую для отображения элементов.
Это должно быть важно для тех, кто придет сюда в будущем: метод sort()
не возвращает тип, поэтому его нельзя вызвать в строке объявления. Это была одна из моих проблем.
не могли бы вы показать нам данные из пожарного склада? (сборник / документ)