【问题标题】:Flutter FutureBuilder Returning Null Error TriggeredFlutter FutureBuilder返回Null错误触发
【发布时间】:2019-03-21 16:47:11
【问题描述】:

我正在尝试从 Firestore 数据库中的给定文档返回评论和文章字段。我利用未来的构建器通过 ListTile 返回这些数据。

当我运行它时,屏幕会瞬间变红,并呈现以下错误,然后再按需要成功显示磁贴。错误是: 构建函数返回 null。有问题的小部件是:FutureBuilder 构建函数绝不能返回 null。要返回导致建筑小部件填满可用空间的空白空间,请返回“new Container()”。要返回占用尽可能少空间的空白空间,请返回“new Container(width: 0.0, height: 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();
            }
          }
        }),),
);
  }
}

为什么循环进度指示器不能满足返回小部件的需要?

感谢您的帮助。

【问题讨论】:

    标签: flutter google-cloud-firestore


    【解决方案1】:

    试试这个:

    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();
                }
            }),),
    );
      }
    }
    

    else 应该在 snapshot.hasdata 上,而不是在 snapshot.data 上!= null

    【讨论】:

    • 太棒了!谢谢!
    猜你喜欢
    • 2021-08-24
    • 2020-07-10
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2021-01-28
    • 2020-03-08
    • 1970-01-01
    相关资源
    最近更新 更多