【问题标题】:Getting data as null from snapshot.data in Flutter从 Flutter 中的 snapshot.data 获取数据为 null
【发布时间】:2021-06-08 07:58:14
【问题描述】:

我找不到出现此错误的原因,因为 Firestore 上存储了数据,而且我还处理了可能的异常。 StreamBuilder QuerySnapshot 小部件正在引发异常。我该如何解决这个问题请帮助

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

class AdminScreen extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
    CollectionReference users = FirebaseFirestore.instance.collection('complaints');

    return StreamBuilder<QuerySnapshot>(
        stream: users.snapshots(),
        builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.hasError) {
            return Text('Something went wrong');
        }

        if (snapshot.connectionState == ConnectionState.waiting) {
            return Text("Loading");
        }
        
        return ListView(
            children: snapshot.data.docs.map((DocumentSnapshot document) {
            return new ListTile(
                title: new Text(document.data()['Name']),
                subtitle: new Text(document.data()['Complaint']),
            );
        }).toList(),
        );
        },
    );}
}

错误:

A non-null String must be provided to a Text widget.
'package:flutter/src/widgets/text.dart':
Failed assertion: line 370 pos 10: 'data != null'
by StreamBuilder<QuerySnapshot> Widget

Firestore SS:

【问题讨论】:

  • 你能展示你的firestore吗?

标签: firebase flutter google-cloud-firestore snapshot


【解决方案1】:

如果没有给出initialDataStreamBuilder 将发出null 作为第一个事件。为了缓解,您应该先使用snapshot.hasData 检查数据是否为null,然后再尝试读取它,例如:

if(!snapshot.hasData) {
 return Center(child: CircularProgressIndicator()));
}
// from here on you can access the data after you have checked it's not null:

【讨论】:

  • CircularProgressIndicator() 对吗?但仍然显示相同的错误
  • 是的,抱歉,这是一个错字。你把代码放在return ListView 上面了吗?如果是这样,也许您的数据库中的数据为空,您应该按照@JideGuru 的建议进行空检查。
  • 好的,现在在 ListTile 上没有显示 Material Widget
  • 将卡片包装到 ListTile 并成功了!!谢谢大家
猜你喜欢
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
  • 1970-01-01
  • 2021-02-26
  • 2020-07-01
  • 2020-07-18
  • 2021-06-27
相关资源
最近更新 更多