I'm getting a problem when I want to get my picture download link Flutter (No App Check token for request.)

Viewed 61

I am getting such an error when getting the download link of the photo I uploaded to firebase.enter image description here

Source: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));
  }

problem

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 Answers

In the code, Firestore's set() method is getting called before the uploading is done. The execution of upload should return String but its asynchronous behaviour is expecting await before the execution happens (that's the reason you're getting the Future logged in console). You should await for storage to upload the file.

So the final code will be:

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));
  }
Related