【发布时间】:2020-09-24 06:10:55
【问题描述】:
我正在尝试将图像上传到 firebase 存储并将该图像 url 用作 firestore 中的元数据,但是图像 url 始终为空。这是代码
我如何得到图片
File noticepic;
Future getNotice()async{
var tempImage = await ImagePicker.pickImage(source: ImageSource.gallery);
setState(() {
noticepic=tempImage ;
});
}
我如何将其上传到 Firebase 存储
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();
这是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);
}
如何通过按图标按钮触发拍照
child: IconButton(
icon: Icon(Icons.add_photo_alternate),
color: Colors.grey[700],
iconSize: 40,
onPressed:(){
getNotice().then((f) async => await uploadNotice());
}
),
【问题讨论】:
标签: database flutter file-upload google-cloud-firestore firebase-storage