코딩하는 제리

[Flutter/Project](Instagram Clone) Firebase Storage Image Upload 본문

Flutter/Project_InstaClone(완)

[Flutter/Project](Instagram Clone) Firebase Storage Image Upload

JerryCho 2021. 2. 25. 12:45

share_post_screen.dart -> postKey 추가


소스코드 및 pubspec.yaml

firebase_storage: ^7.0.0 추가

// repo/image_network_repository.dart

import 'dart:io';

import 'package:firebase_storage/firebase_storage.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_project_IJ/repo/helper/image_helper.dart';

// isolate
class ImageNetworkRepository {
  Future<void> uploadImageNCreateNewPost(File originImage, {@required String postKey}) async {
    try {
      // 메소드명만 입력.
      final File resized = await compute(getResizedImage, originImage);

      // postKey를 가져와 레퍼런스를 생성.
      final Reference reference = FirebaseStorage.instance.ref().child(_getImagePathByPostKey(postKey));

      // 파일 업로드.
      final UploadTask uploadTask = reference.putFile(resized);

      // uploadTask가 끝날 때까지 기다림.
      return await uploadTask;
    } catch (e) {
      print(e);
      return null;
    }
  }

  // postKey를 이용해 포스트 생성.
  String _getImagePathByPostKey(String postKey) => 'post/$postKey/post.jpg';
}

ImageNetworkRepository imageNetworkRepository = ImageNetworkRepository();
Comments