Класс пользователя
class User {
final String uid;
final String username;
final String email;
final String photoUrl;
final String displayName;
final String bio;
User({
this.uid,
this.username,
this.email,
this.photoUrl,
this.displayName,
this.bio,
});
factory User.fromDocument(DocumentSnapshot doc) {
return User(
uid: doc['uid'],
email: doc['email'],
photoUrl: doc['photoUrl'],
displayName: doc['displayName'],
bio: doc['bio']
);
}
}
Создание нового пользователя в работах firestore:
createUserInFirestore() async {
final FirebaseUser user = await FirebaseAuth.instance.currentUser();
DocumentSnapshot doc = await usersRef.document(user.uid).get();
if(!doc.exists) {
final username = await Navigator.push(context, MaterialPageRoute(builder: (context) => CreateAccount(),));
usersRef.document(user.uid).setData({
"uid" : user.uid,
"username" : username,
"photoUrl" : user.photoUrl,
"email" : user.email,
"displayName" : username,
"bio" : "",
"timestamp" : timestamp
});
doc = await usersRef.document(user.uid).get();
}
currentUser = User.fromDocument(doc);
}
Однако создать не удается сообщение по любой причине - получить идентификатор, вызванный нулевой ошибкой:
createPostInFireStore({String mediaUrl, String description, String location}) async {
postsRef.document(widget.currentUser.uid).collection("userPosts").document(postId).setData({
"postId" : postId,
"ownerId" : widget.currentUser.uid,
"username": widget.currentUser.uid,
"mediaUrl" : mediaUrl,
"description" : description,
"location" : location,
"timestamp" : timestamp,
"likes" : {},
});
}
handleSubmit() async {
setState(() {
isUploading = true;
});
await compressImage();
String mediaUrl = await uploadImage(file);
createPostInFireStore(
mediaUrl: mediaUrl,
location: locationController.text,
description: captionController.text
);
captionController.clear();
locationController.clear();
}
У меня проблема в том, что он не создает коллекцию сообщений, когда пользователь хочет опубликовать изображение. Он хранит изображение в хранилище, но не создает коллекцию.