Streambuilder в Flutter для Firestore - PullRequest
       89

Streambuilder в Flutter для Firestore

0 голосов
/ 02 апреля 2020

Привет, я новичок ie во флаттере, и я пытаюсь получить данные из пожарного хранилища, используя построитель потока, и отображать счетчик, пока данные извлекаются из базы данных firebase. Я попытался реализовать построитель потоков и будущий построитель. У меня есть функция, которая выбирает данные из пожарного магазина, а затем я передаю данные в другую функцию для заполнения серебряной сетки. Может ли кто-нибудь помочь мне?

getDevotions(DevotionNotifier d) async {
    QuerySnapshot snapshot =
        await Firestore.instance.collection('devotions').getDocuments();

    List<devotion> _devotionList = [];

    snapshot.documents.forEach((document) {
      devotion d1 = devotion.fromMap(document.data);
      _devotionList.add(d1);
    });

    d.devotionList = _devotionList;
  }
}
class _dailyDevotionPageState extends State<dailyDevotionPage> {
  @override
  void initState() {
    DevotionNotifier _devotionNotifier =
        Provider.of<DevotionNotifier>(context, listen: false);
    getDevotions(_devotionNotifier);
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    DevotionNotifier _devotionNotifier = Provider.of<DevotionNotifier>(context);
    getDevotions(_devotionNotifier);

    String url = "https://picsum.photos/412/700";

    return Scaffold(
      backgroundColor: Colors.white,
      body: SafeArea(
        child: CustomScrollView(
          slivers: <Widget>[
            SliverAppBar(
              expandedHeight: 220.0,
              pinned: true,
              elevation: 50,
              flexibleSpace: FlexibleSpaceBar(
                collapseMode: CollapseMode.parallax,
                title: Text(
                  'Devotional',
                  style: TextStyle(
                    fontFamily: 'Merriweather',
                  ),
                ),
                background: Image.asset(
                  'assets/2.jpg', // <===   Add your own image to assets or use a .network image instead.
                  fit: BoxFit.cover,
                ),
              ),
            ),
            new SliverGrid(
              gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent(
                maxCrossAxisExtent: 200.0,
                mainAxisSpacing: 10.0,
                crossAxisSpacing: 6.0,
                childAspectRatio: 0.7,
              ),
              delegate: SliverChildBuilderDelegate(
                (BuildContext context, int index) {
                  int i = _devotionNotifier.devotionList.length - index - 1;

                  return devotionLayout(_devotionNotifier, i, context);
                },
                childCount: _devotionNotifier.devotionList.length,
              ),
            ),
          ],
        ),
      ),
    );
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...