Получить данные о сборе пожаров в riverpod?

Я создал собственный виджет флаттера (StreamBuilder) для получения данных из firestore. Я использую эти данные для заполнения GridView, содержащего обувь.

Мне также нужны данные из другой коллекции для заполнения GridView. Эта коллекция содержит все идентификаторы обуви, которые понравились определенному пользователю. Проблема в том, что я не хочу использовать вложенные StreamBuilders для получения второй коллекции.

Можно ли получить понравившиеся shoeID у провайдера, такого как riverpod, и слушать обновления?

      final _firestore = FirebaseFirestore.instance;

class ProductsList extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
      stream: _firestore.collection('shoes').orderBy('title').snapshots(),
      builder: (context, snapshot) {
        if (!snapshot.hasData) {
          return Center(
            child: CircularProgressIndicator(
              backgroundColor: Colors.lightBlueAccent,
            ),
          );
        }

        final shoes = snapshot.data.docs;
        List<ProductColumn> productColumnsList = [];
        for (var shoe in shoes) {
          final title = shoe.data()['title'];
          final price = shoe.data()['price'];
          final imgUrl = shoe.data()['imgUrl'];
          final rating = shoe.data()['rating'];
          final sale = shoe.data()['sale'];
          final subTitle = shoe.data()['subTitle'];
          final isLiked = false;
          productColumnsList.add(
            ProductColumn(
              title: title,
              price: price,
              imgUrl: imgUrl,
              rating: rating,
              sale: sale,
              subTitle: subTitle,
              isLiked: isLiked,
            ),
          );
        }
        return Expanded(
          child: GridView.count(
            childAspectRatio: 0.62,
            crossAxisSpacing: 8.0,
            mainAxisSpacing: 8.0,
            crossAxisCount: 2,
            children: productColumnsList,
          ),
        );
      },
    );
  }
}

0 ответов

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