firebase - 发生异常。_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);
},
);
}
跨步的时候。
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>
解决方案
的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);
},
);
}
}
推荐阅读
- java - XmlPullParserException kSoap
- sql - 为什么 SSIS 包在部署到 Integration Services 目录时会失败,但在 Visual Studio 上运行良好?
- apache - Apache 未启动:(98)地址已在使用中
- html - 在输入标签上使用 float:right 时如何摆脱多余的空间
- javascript - Boostsrap 切换开关以在刷新后保持值
- tableau-api - 在 Tableau 中如何在 Header 中显示仪表板刷新日期?
- python - Seaborn:如何在计数图中显示值?
- authentication - 非服务帐户的 AD/LDAP 身份验证
- angular - 当 typeahead 没有任何结果时删除最后输入的字符
- json - Swift JSON解码器不同类型