Я ищу для извлечения содержимого массива карт («предметы», ниже) в документах в firebase для заполнения ListView, используя флаттер.
Для иллюстрации, структура моих документов можетбыть упрощенным до:
- имя курса
- предметов (массив карт)
- subject_id
- subject_name
- subject_is_active
Будет один документ на курс.
Я здесь относительно новичок, поэтому я попытался адаптировать фрагменты кода, найденные на разных сайтах.Я чувствую, что «почти» там, но не могу разобраться!
Я пытаюсь понять две вещи:
- как запросить мою коллекциюдокументов, чтобы найти только активные предметы (subject_is_active == true) для данного курса (имя_курса = 'значение моего ключа')
- как определить количество активных предметов для данного курса, чтобы я могустановите правильный ItemCount для ListView, который я пытаюсь заполнить.
Мой код:
Widget _buildListItem(BuildContext context, DocumentSnapshot document) {
return ListTile(
title: Row(
children: [
Expanded(
child: Text(
document['subject_name'].toString(),
),
),
Container(
child: Text('is active'
),
),
],
),
);
}
@override
StreamBuilder(
stream:
Firestore.instance.collection('courses').where('course_name', isEqualTo: 'test course').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return const Text('loading...');
return ListView.builder(
itemExtent: 80.0,
itemCount: itemBuilder: (context, index) => _buildListItem(
context, snapshot.data.documents[index])
);
}),
)));
}