GridView с флаттером и магазином пожаров - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь сделать простой GridView из записи облачного пожарного хранилища.Я просмотрел много видеоуроков, но безуспешно.Вот код:

import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

class EventList extends StatefulWidget {
 @override
 EventListState createState() => new EventListState();
}

class EventListState extends State<EventList> {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: Firestore.instance.collection('events_flutter').snapshots(),
  builder: (BuildContext context, DocumentSnapshot snapshot) {
    if (!snapshot.hasData) {
      return Center(child: const Text('Loading events...'));
    }
    return GridView.builder(
      gridDelegate:
          SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
      itemBuilder: (BuildContext context, int index) {
        return Text(snapshot['event_name']);
      },
      itemCount: snapshot.data.documents.length,
    );
  },
);}}

И это сообщение об ошибке при наведении на «builder: (контекст BuildContext, снимок DocumentSnapshot)».Может ли кто-нибудь помочь мне понять, что происходит?

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Вам следует заменить тип вашего snapshot с DocumentSnapshot на AsyncSnapshot.

...

builder: (BuildContext context, AsyncSnapshot snapshot) {
    if (!snapshot.hasData) {
        return Center(child: const Text('Loading events...'));
    }

    ...

А также, вы можете заменить эту строку:

return Text(snapshot['event_name']);

к этому:

return Text(snapshot.data.documents[index]['event_name']);
0 голосов
/ 08 февраля 2019

You collection (). Snapshot () возвращает QuerySnapshot, поэтому вам придется изменить DocumentSnapshot на QuerySnapshot следующим образом:

class EventListState extends State<EventList> {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: Firestore.instance.collection('events_flutter').snapshots(),
  builder: (BuildContext context, QuerySnapshot snapshot) {
    if (!snapshot.hasData) {
      return Center(child: const Text('Loading events...'));
    }
    return GridView.builder(
      gridDelegate:
          SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
      itemBuilder: (BuildContext context, int index) {
        return Text(snapshot['event_name']);
      },
      itemCount: snapshot.data.documents.length,
    );
  },
);}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...