【发布时间】:2021-01-16 18:14:51
【问题描述】:
我正在尝试将 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
谢谢你。
【问题讨论】:
-
在存储库中打印结果时显示什么?
-
@AnasMohammed:我打印 documentSnapshot.data() 显示为空。先生,也许我的存储库是错误的。我不知道
-
尝试在repository中的结果后添加await并检查集合名称是否正确?
-
@AnasMohammed:是的,先生,我刚刚意识到我在写集合名称时打错了。谢谢先生。
标签: flutter google-cloud-firestore bloc