जैसे ही मैंने एक बटन दबाया मैं अपनी डाउनलोड छवि यूआरएल को फायरस्टोर में जोड़ने की कोशिश कर रहा हूं। लेकिन एक यूआरएल स्टोर करने के बजाय यह "भविष्य का उदाहरण" स्टोर करता है

मैंने निम्नलिखित कोड की कोशिश की है।

एक छवि को भंडारण में संग्रहीत करने के लिए:

 Future uploadImageToFirebaseStorage(BuildContext context) async {
StorageReference firebaseStorageRef =
    FirebaseStorage.instance.ref().child('uploads/$name');
StorageUploadTask uploadTask = firebaseStorageRef.putFile(_imageFile);
StorageTaskSnapshot taskSnapshot = await uploadTask.onComplete;  }

और यह छवि url प्राप्त करने के लिए:

Future<void> getImageFromStorage() async {
final ref = _storage.ref().child('uploads/$name');
var url = await ref.getDownloadURL();
_downloadUrl = url.toString();
print('The URL is : $_downloadUrl');
return url; }

और इस फ़ंक्शन का उपयोग इस प्रकार करते हैं:

   onPressed: () {
                  uploadImageToFirebaseStorage(context);
                  if (doctorsName != null &&
                      doctorsPost != null &&
                      doctorsDegree != null) {
                    
                    _firestore.collection('Doctors Details').add({
                      'Name': doctorsName,
                      'Degree': doctorsDegree,
                      'Post': doctorsPost,
                      'URL': _downloadUrl, // Storing URL
                    });
                  }
                  
                  setState(() {
                    Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (context) => Doctors(),
                      ),
                    );
                  });

मैंने बहुत कोशिश की लेकिन मैं इसे ठीक नहीं कर सकता। मुझे लगता है कि मैंने अपनी समस्या का स्पष्ट रूप से उल्लेख किया है। मैं अब आपकी मदद की प्रतीक्षा कर रहा हूं। जी शुक्रिया !

-1
Sangam Sharma 15 अक्टूबर 2020, 06:44

1 उत्तर

सबसे बढ़िया उत्तर

चूंकि uploadImageToFirebaseStorage को async के रूप में चिह्नित किया गया है, इसलिए आपको परिणामों का उपयोग करने से पहले इसे समाप्त करने के लिए await की आवश्यकता है:

await uploadImageToFirebaseStorage(context);
...
0
Frank van Puffelen 15 अक्टूबर 2020, 06:48