Я сделал это до загрузки изображения в хранилище Firebase и загрузки URL-адреса. Здесь мне нужно сохранить информацию о недавно зарегистрированном пользователе в документе Firestore. Я храню некоторые детали, одним из которых является URL-адрес изображения, загруженный из хранилища Firebase.
Теперь мне нужно назначить загруженный URL для Firestore для доступа к нему на моих страницах дротиков.
uploadImage() async {
var random = Random(25);
final StorageReference fireref = FirebaseStorage.instance
.ref()
.child('profilepics/${random.nextInt(5000).toString()}.jpg');
StorageUploadTask task = fireref.putFile(profilepic);
StorageTaskSnapshot snapshottask = await task.onComplete;
String downloadUrl = await snapshottask.ref.getDownloadURL();
if (downloadUrl != null) {
userManagement.addProfilePic(downloadUrl.toString()).then((val) {
Navigator.of(context).pushReplacementNamed('/twelf');
});
}
}
Выше приведен код получения URL-адреса изображения из хранилища Firebase. И, если вы видите, я вызвал метод addProfilePi c, чтобы добавить загруженный URL-адрес в FireStore. И метод таков:
Future addProfilePic(picUrl) async {
//---
}
Что я должен написать в этом методе, чтобы загрузить URL в firestore. Я не в состоянии понять. Дополнительный код для понимания:
class UserManagement {
storeNewUser(user, context) {
Firestore.instance.collection('/userdetails').add({
'Email': user.email,
'uid': user.uid,
'displayName': user.fullname,
'photoUrl': user.photoUrl
}).then((value) {
Navigator.of(context).pop();
Navigator.of(context).pushReplacementNamed('/selectpic');
}).catchError((e) {
print(e);
});
}
А приведенный ниже код близок к регистрации окончательного кода, который загружает данные в Firestore:
final String userId = await widget.auth
.createUserWithEmailAndPassword(_email, _password)
.then((signedInUser) async {
var userUpdateInfo = new UserUpdateInfo();
userUpdateInfo.displayName = _fullname;
userUpdateInfo.photoUrl = _imageurl;
//'https://cdn.mos.cms.futurecdn.net/QjuZKXnkLQgsYsL98uhL9X-1024-80.jpg';
final user = await FirebaseAuth.instance.currentUser();
user.updateProfile(userUpdateInfo).then((user) {
FirebaseAuth.instance
.currentUser()
.then(
(user) => {UserManagement().storeNewUser(user, context)})
.catchError((e) {
print(e);
});
}).catchError((e) {
print(e);
});
}).catchError((e) {
print(e);
});
print('Registered user: $userId');
}