firebase에 이미지를 업로드하고 이미지 URL 받은후 cloud firestore에 기본 정보를 업로드하는 샘플.
/* 플러그인 정보 */
firebase_core: ^0.7.0
firebase_storage: ^7.0.0
cloud_firestore: ^0.16.0
Future _uploadImage() async {
// 스토리지에 먼저 사진 업로드 하는 부분.
final firebaseStorageRef = FirebaseStorage.instance;
TaskSnapshot task = await firebaseStorageRef
.ref() // 시작점
.child('post') // collection 이름
.child(_picName) // 업로드한 파일의 최종이름, 본인이 원하는 이름.
.putFile(_image); //실제 이미지파일, 버전 ^7.0.0 에서는 onComplete 필요없음
/*.onComplete; // 버전 ^4.0.1 에 해당 사항*/
if (task != null) {
// 업로드 완료되면 데이터의 주소를 얻을수 있음, future object
var downloadUrl = await task.ref.getDownloadURL();
// post collection 만들고, 하위에 문서를 만든다
var doc =
FirebaseFirestore.instance.collection('post').doc();
doc.set({
'id': doc.id,
'datetime' : DateTime.now().toString(),
'displayName': widget.user.displayName,
'userPhotoUrl': widget.user.photoURL,
}).then((onValue) {
//정보 인서트후, 상위페이지로 이동
Navigator.pop(context);
});
}
}
'Flutter > 00 Legacy' 카테고리의 다른 글
[Flutter] Provider with Flutter sample - ChangeNotifierProvider (0) | 2021.05.04 |
---|---|
[Flutter] Bloc, Stream - setState 을 Bloc, Stream 으로 변경 (0) | 2021.05.03 |
[Flutter] Bloc, Stream - setState 로 구현 (0) | 2021.05.03 |
[Flutter] StreamBuilder with FirebaseFirestore (0) | 2021.02.03 |
[Flutter] CRUD with FirebaseFirestore & FirebaseStorage (2) | 2021.02.03 |