I'm trying to upload images to firebase storage and use that image url as metadata in firestore, however the image url is always null. Here is the codes
how I get the picture
File noticepic;
Future getNotice()async{
var tempImage = await ImagePicker.pickImage(source: ImageSource.gallery);
setState(() {
noticepic=tempImage ;
});
}
how I upload it to firebase storage
uploadNotice()async{
var randomno=Random(25);
final StorageReference firebaseStorageRef=FirebaseStorage.instance
.ref().child('cisnotices/${randomno.nextInt(5000).toString()}.jpg');
StorageUploadTask task = firebaseStorageRef.putFile(noticepic);
StorageTaskSnapshot snapshottask = await task.onComplete;
String downloadUrl = await snapshottask.ref.getDownloadURL();
noticeProvider.changePhotoUrl(downloadUrl.toString());
setState(() {
print('pic uploaded');
});
}
NoticeProvider noticeProvider=NoticeProvider();
This is the noticeprovider.dart
changePhotoUrl(String value){
_photoUrl=value;
notifyListeners();
}
saveNotice(){
var newNotice=Notice(userName: userName,userPost: userPost,photoUrl: photoUrl,
date: date,noticeId: uuid.v4());
firestoreService.saveNotice(newNotice);
}
how i trigger the picture to be taken by pressing a icon button
child: IconButton(
icon: Icon(Icons.add_photo_alternate),
color: Colors.grey[700],
iconSize: 40,
onPressed:(){
getNotice().then((f) async => await uploadNotice());
}
),