# #firebase #flutter #dart
Вопрос:
Я получаю такую ошибку при получении ссылки для загрузки фотографии, которую я загрузил в firebase.введите описание изображения здесь
Источник:Github
uploadImageToFirebase() async {
File yuklenecekDosya = _imagefile!;
firebase_storage.Reference referansYol = firebase_storage
.FirebaseStorage.instance
.ref()
.child("Profilresimleri")
.child(user!.uid)
.child("profilresmi.png");
firebase_storage.UploadTask yuklemeGorevi =
referansYol.putFile(yuklenecekDosya);
yuklemeGorevi.then((s) {
if (s.state.toString() == firebase_storage.TaskState.success.toString()) {
downloadURL = referansYol.getDownloadURL().toString();
print(referansYol.getDownloadURL().toString());
print(referansYol.getDownloadURL().toString());
print(referansYol.getDownloadURL().toString());
print(referansYol.getDownloadURL().toString());
print(referansYol.getDownloadURL().toString());
}
});
//= await firebase_storage.FirebaseStorage.instance
// .ref('Profilresimleri/${user!.uid}/profilresmi.png')
//.getDownloadURL();
await firestore
.collection("Users")
.doc(user!.uid)
.set({"profilfotolink": downloadURL}, SetOptions(merge: true));
}
проблема
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
2
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
I/chatty ( 3803): uid=10148(com.example.ekinoks_elektron) FirestoreWorker identical 3 lines
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
I/flutter ( 3803): Instance of 'Future<String>'
I/chatty ( 3803): uid=10148(com.example.ekinoks_elektron) 1.ui identical 3 lines
I/flutter ( 3803): Instance of 'Future<String>'
6
W/NetworkRequest( 3803): No App Check token for request.
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Ldalvik/system/CloseGuard;->close()V (greylist,core-platform-api, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Ldalvik/system/CloseGuard;->warnIfOpen()V (greylist,core-platform-api, linking, allowed)
Ответ №1:
В коде set()
метод Firestore вызывается до завершения загрузки. Выполнение загрузки должно возвращать строку, но ее асинхронное поведение ожидается await
до того, как произойдет выполнение (именно по этой причине вы в будущем войдете в консоль). Вам следует дождаться загрузки файла в хранилище.
Таким образом, окончательный код будет:
uploadImageToFirebase() async {
File yuklenecekDosya = _imagefile!;
firebase_storage.Reference referansYol = firebase_storage
.FirebaseStorage.instance
.ref()
.child("Profilresimleri")
.child(user!.uid)
.child("profilresmi.png");
firebase_storage.UploadTask yuklemeGorevi =
referansYol.putFile(yuklenecekDosya);
await yuklemeGorevi.then((s) {
if (s.state.toString() == firebase_storage.TaskState.success.toString()) {
downloadURL = referansYol.getDownloadURL().toString();
print("Download URL: $downloadURL");
}
});
await firestore
.collection("Users")
.doc(user!.uid)
.set({"profilfotolink": downloadURL}, SetOptions(merge: true));
}