Flutter FutureBuilder, возвращающий нулевую ошибку, вызванную - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь вернуть поле комментария и статьи из данного документа в базе данных Firestore.Я использую будущего строителя, чтобы вернуть эти данные посредством ListTile.

Когда я его запускаю, экран становится красным на доли секунды, и отображается ошибка ниже, прежде чем плитка будет успешно отображена по желанию.Ошибка: Функция сборки вернула ноль. Виджет, который нарушает работу: FutureBuilder Функции сборки никогда не должны возвращать ноль.Чтобы вернуть пустое пространство, из-за которого виджет здания заполняет доступную комнату, верните «new Container ()».Чтобы вернуть пустое пространство, занимающее как можно меньше места, верните «новый контейнер (ширина: 0,0, высота: 0,0)».

Вот мой код:

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

class PostGetter extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
// TODO: implement build
return new Scaffold(
  body: new Container(
    child: new FutureBuilder(
        future: Firestore.instance
            .collection('post')
            .where('article', isEqualTo: 'lpquVtoRNsu0vBLjNByS')
            .getDocuments(),
        builder: (BuildContext context, AsyncSnapshot snapshot) {
          if (snapshot.hasData) {
            if (snapshot.data != null) {
              return new Column(
                children: <Widget>[
                  new Expanded(
                    child: new ListView(
                      children: snapshot.data.documents
                          .map<Widget>((DocumentSnapshot document) {
                        return new ListTile(
                          title: new Text(document['comment']),
                          subtitle: new Text(document['author']),
                        );
                      }).toList(),
                    ),
                  ),
                ],
              );
            } else {
              return new CircularProgressIndicator();
            }
          }
        }),),
);
  }
}

Почему woudnразве круговой индикатор прогресса удовлетворяет необходимость возврата виджета?

Спасибо за помощь.

1 Ответ

0 голосов
/ 17 октября 2018

попробуйте это:

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

class PostGetter extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
// TODO: implement build
return new Scaffold(
  body: new Container(
    child: new FutureBuilder(
        future: Firestore.instance
            .collection('post')
            .where('article', isEqualTo: 'lpquVtoRNsu0vBLjNByS')
            .getDocuments(),
        builder: (BuildContext context, AsyncSnapshot snapshot) {
          if (snapshot.hasData) {
            if (snapshot.data != null) {
              return new Column(
                children: <Widget>[
                  new Expanded(
                    child: new ListView(
                      children: snapshot.data.documents
                          .map<Widget>((DocumentSnapshot document) {
                        return new ListTile(
                          title: new Text(document['comment']),
                          subtitle: new Text(document['author']),
                        );
                      }).toList(),
                    ),
                  ),
                ],
              );
            } 
          }else {
              return new CircularProgressIndicator();
            }
        }),),
);
  }
}

иначе должно быть в снимке.hasdata, а не в snapshot.data! = Null

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...