【问题标题】:Null check operator used on a null value Flutter用于空值 Flutter 的空值检查运算符
【发布时间】:2022-01-18 02:42:45
【问题描述】:

我知道这个问题与 dart null 安全性有关,但我无法解决这个问题,因为我收到了这个“Null check operator used on a null value Flutter”错误。请帮我解决这个问题

我的代码是:

class _ListStudentPageState extends State<ListStudentPage> {
  final Stream<QuerySnapshot> studentStream =
  FirebaseFirestore.instance.collection('students').snapshots();
  @override
  Widget build(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
      stream: studentStream,
      builder:(BuildContext context , AsyncSnapshot<QuerySnapshot> snapshot){
      if(snapshot.hasError)
        {
          print('something went wrong');
        }
      if(snapshot.connectionState == ConnectionState.waiting)
        {
          return const Center(
            child: CircularProgressIndicator(),
          );
        }
       final List storeDocs =[];
      snapshot.data!.docs.map((DocumentSnapshot document){
        Map a = document.data() as Map<String , dynamic>;
        storeDocs.add((a));
        a['id'] = document.id;
      }).toList();

【问题讨论】:

  • 检查调试器,snapshot.data 可能为空。
  • 如果快照有错误,下一个 if 语句后面的代码仍将执行,因为您没有返回或抛出。也许snapshot.hasError 是真的,然后snapshot.data 是空的,你得到了错误。

标签: android firebase flutter dart dart-null-safety


【解决方案1】:

我会试试这个:

      final List storeDocs =[];
      if(snapshot.data=null){
      snapshot.data!.docs.map((DocumentSnapshot document){
        Map a = document.data() as Map<String , dynamic>;
        storeDocs.add((a));
        a['id'] = document.id;
      }).toList();
}

或者更漂亮的方式

      final List storeDocs =[];
      snapshot.data?.docs??[].map((DocumentSnapshot document){
        Map a = document.data() as Map<String , dynamic>;
        storeDocs.add((a));
        a['id'] = document.id;
      }).toList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-25
    • 2023-01-05
    • 2022-06-15
    • 2022-01-05
    • 2021-08-30
    • 2021-12-03
    • 2021-11-06
    • 2021-06-17
    相关资源
    最近更新 更多