如何实现从Firestore获取数据并转换为AddressModel的Future方法?
从Firestore获取AddressModel数据的问题与解决方法
我尝试创建一个返回类型为AddressModel的Future方法,用于从Firestore中获取地址数据,但遇到了问题。
AddressModel类
class AddressModel{ int pinCode,contactNum; String fullName,apartment,city,state; String? area; String? landmark; AddressModel({ required this.pinCode, required this.contactNum, required this.fullName, required this.apartment, required this.city, required this.state, this.area, this.landmark, }); Map<String, dynamic> toMap() { return { 'pinCode': pinCode, 'contactNum': contactNum, 'fullName': fullName, 'apartment': apartment, 'area': area, 'landmark': landmark, 'city': city, 'state': state, }; } factory AddressModel.fromMap(Map<String, dynamic> map) { return AddressModel( pinCode: map['pinCode'] as int, contactNum: map['contactNum'] as int, fullName: map['fullName'] as String, apartment: map['apartment'] as String, area: map['area'] as String, landmark: map['landmark'] as String, city: map['city'] as String, state: map['state'] as String, ); } }
初始Future方法(存在问题)
Future<AddressModel?> getAddress(BuildContext context)async{ try{ DocumentSnapshot snapshot = await _fireStore.collection("users").doc(currentUser!.uid).get(); //---------------此处遇到问题----------------// }on FirebaseException catch(e){ showSnackBar(context, e.code.toString()); return null; } }
Firestore文档结构

解决方法
QuerySnapshot snapshot = await _fireStore.collection("users").where("uId",isEqualTo: currentUser!.uid).get(); if(snapshot.docs.isNotEmpty){ return AddressModel.fromMap(snapshot.docs[0]['address']); } return null;
内容的提问来源于stack exchange,提问作者Vivek Chib
相关产品推荐
相关产品推荐

