' 在类型转换中),firebase,flutter,dictionary"/>

首页 > 解决方案 > 发生异常。_CastError(类型“Null”不是“Map”类型的子类型' 在类型转换中)

问题描述

当我尝试运行应用程序时,动画会停止盘旋并且不会移动到任何地方,然后我按下“Stepover”,动画就会开始无休止地盘旋并抛出另一个错误。不太清楚如何解决它。

类别服务.dart

    DocumentSnapshot snapshot = await categories.doc('categories').get();
    var data = snapshot.data() as Map;
    var categoriesData = data['categories'] as List<dynamic>;
    categoriesData.forEach(
      (catData) {
        Category cat = Category.fromJson(catData);
        _categories.add(cat);
      },
    );
  }

图 1

跨步的时候。

 CategoryService.getCategoriesCollectionFromFirebase (package:foodshare/services/categoryservice.dart:21:32) <asynchronous suspension>

Running "flutter pub get" in foodshare...
Launching lib/main.dart on iPhone 12 Pro Max in debug mode...
lib/main.dart:1
Xcode build done.                                           784.0s
Connecting to VM Service at ws://127.0.0.1:58491/GgqClrs0f1A=/ws
[VERBOSE-2:ui_dart_state.cc(199)] Unhandled Exception: type 'Null' is not a subtype of type 'Map<dynamic, dynamic>' in type cast
#0      CategoryService.getCategoriesCollectionFromFirebase (package:foodshare/services/categoryservice.dart:21:32)
<asynchronous suspension>

图 2

Pastebin 上的代码

标签: firebaseflutterdictionary

解决方案


DocumentSnapshot snapshot类型为Map<String, dynamic>。尝试像这样编写代码:

 DocumentSnapshot snapshot = await categories.doc('categories').get();
  if(snapshot.exists){
    Map<String, dynamic> data = snapshot.data() as Map<String, dynamic>;
        var categoriesData = data['categories'] as List<dynamic>;
        categoriesData.forEach(
          (catData) {
            Category cat = Category.fromJson(catData);
            _categories.add(cat);
          },
        );
  }
  }

推荐阅读