Есть ли способ получить данные firestore, например, «Информация о пользователе» в класс пользовательской модели во флаттере? Это мой класс пользователя:
class Users {
final int id;
final String firstName;
final String lastName;
final String emailAddress;
final String imageProfile;
const Users({
this.id,
this.firstName,
this.lastName,
this.emailAddress,
this.imageProfile,
});
}
final Users currentUser = Users(
id: 'GET_DATA_FROM_FIRESTORE'/// firebaseUSer.currentUserUID
firstName: 'GET_DATA_FROM_FIRESTORE',
lastName: 'GET_DATA_FROM_FIRESTORE',
emailAddress: 'GET_DATA_FROM_FIRESTORE',
imageProfile: 'GET_DATA_FROM_FIRESTORE',
);
затем передайте данные с помощью currentUser.firstName
и т. д. другим виджетам.
данные, которые мне нужно получить в этом классе, создаются в форме SignuUp во флаттере и помещаются в коллекцию firestore.
Я использовал это в своем проекте. Надеюсь, это будет полезно.
Класс модели
class Message{
String id;
String message;
String senderId;
Timestamp timeStamp;
bool isMedia;
Message({this.id,this.message,this.senderId,this.timeStamp,this.isMedia});
factory Message.fromSnapshot(DocumentSnapshot snapshot){
return Message(
id:snapshot.id,
message: snapshot.data()['message'],
senderId: snapshot.data()['senderId'],
timeStamp: snapshot.data()['timeStamp'],
isMedia: snapshot.data()['isMedia'],
);
}
Map<String, dynamic> toJson() =>
{
'message': message,
'senderId': senderId,
'isMedia': isMedia,
'timeStamp': DateTime.now(),
};
}
Класс обслуживания
*Исходный
final FirebaseFirestore _fBaseFireStore = FirebaseFirestore.instance;
CollectionReference _collectionRef;
MessageService() {
_collectionRef = _fBaseFireStore.collection('Conversation');
}
* Получить данные из firestore
Stream<List<Message>> getMessages(String conversationId) {
var ref = _collectionRef
.doc(conversationId)
.collection('messages');
return ref.snapshots().map(
(event) => event.docs.map((e) => Message.fromSnapshot(e)).toList());
}
*Запись данных в firestore
Future<void> sendMessage(Message message, String conversationId) async {
var ref = _collectionRef.doc(conversationId).collection('messages');
await ref.add(message.toJson());
}
Большое спасибо, а что насчет _collectionRef?
Это родительская коллекция _fBaseFireStore = FirebaseFirestore.instance; _collectionRef = _fBaseFireStore.collection('Разговор');
Не могли бы вы отредактировать ответ выше с этим родителем, чтобы я лучше понял, почему я получаю сообщение об ошибке?
Похоже, вы еще не пытались запросить Firestore. Начните с этого, используя документацию, затем, когда у вас есть данные из документа, должно быть ясно, как поместить их в класс данных.