如何解决Flutter Bloc:将Firestore数据提取到模型中
我正在尝试从Firestore提取数据到我的模型中,但是失败了。
错误消息显示:
The method '[]' was called on null,tried calling : []("alamat")
这是我的代码:
存储库:
Future<FaskesModel> getFaskesFirestore(String id) async {
var result = _firestore
.collection("fakses")
.doc(id)
.get()
.then((snapshot) => FaskesModel.fromSnapshot(snapshot));
return result;
}
FaskesModel类:
import 'package:cloud_firestore/cloud_firestore.dart';
class FaskesModel {
String alamat;
String id;
String nama;
GeoPoint alamatGeo;
String deskripsi;
String noTelepon;
String noTeleponDarurat;
String urlGambar;
String website;
FaskesModel(
{this.alamat,this.alamatGeo,this.deskripsi,this.id,this.nama,this.noTelepon,this.noTeleponDarurat,this.urlGambar,this.website});
factory FaskesModel.fromJson(Map<String,dynamic> json) => FaskesModel(
alamat: json['alamat'] as String,alamatGeo: json['alamatGeo'] as GeoPoint,deskripsi: json['deskripsi'] as String,id: json['id'] as String,nama: json['nama'] as String,noTelepon: json['noTelepon'] as String,noTeleponDarurat: json['noTeleponDarurat'] as String,urlGambar: json['urlGambar'] as String,website: json['website'] as String);
Map<String,dynamic> toJson() => {
"alamat": alamat,"alamatGeo": alamatGeo,"deskripsi": deskripsi,"id": id,"nama": nama,"noTelepon": noTelepon,"noTeleponDarurat": noTeleponDarurat,"urlGambar": urlGambar,"website": website
};
FaskesModel.fromSnapshot(DocumentSnapshot documentSnapshot)
: alamat = documentSnapshot.data()['alamat'],alamatGeo = documentSnapshot.data()['alamatGeo'],deskripsi = documentSnapshot.data()['deskripsi'],id = documentSnapshot.data()['id'],nama = documentSnapshot.data()['nama'],noTelepon = documentSnapshot.data()['noTelepon'],noTeleponDarurat = documentSnapshot.data()['noTeleponDarurat'],urlGambar = documentSnapshot.data()['urlGambar'],website = documentSnapshot.data()['urlGambar'];
}
在Bloc类中,我只是这样调用:
FaskesModel faskesModel =
await _firebaseRepository.getFaskesFirestore(event.id);
我搜索了另一个问题,发现找到了DataSnapshot字段,只需致电snapShot.data.data
,但就我而言,我才发现snapShot.data()
。
再一次,我的问题的重点是如何从Firestore提取数据到FaskesModel
谢谢。
解决方法
根据评论将其发布为Community Wiki。
该问题似乎与使用快照将数据返回给类时,集合名称的错误输入有关。一旦类型正确,就可以正确地返回数据,并且不再打印null
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。