Как читать данные массива с помощью Firebase и Flutter для извлечения активных субъектов? - PullRequest
1 голос
/ 27 июня 2019

Я ищу для извлечения содержимого массива карт («предметы», ниже) в документах в firebase для заполнения ListView, используя флаттер.

Для иллюстрации, структура моих документов можетбыть упрощенным до:

  • имя курса
  • предметов (массив карт)
    • subject_id
    • subject_name
    • subject_is_active

Будет один документ на курс.

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

Я пытаюсь понять две вещи:

  1. как запросить мою коллекциюдокументов, чтобы найти только активные предметы (subject_is_active == true) для данного курса (имя_курса = 'значение моего ключа')
  2. как определить количество активных предметов для данного курса, чтобы я могустановите правильный 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])
                    );
                  }),

            )));
  }
...