본문 바로가기

Flutter-플러터/플러터 공부

7external_path 패키지, 결국 supabase

반응형

https://pub.dev/packages/external_path

 

external_path | Flutter package

A flutter plugin to get internal, external storage and external public directory path.

pub.dev

 

문제 해결 목적

백업 서비스를 구현 중 입니다. 
원래계획은 앱 외부의 저장소에 db 파일을 보관하려고 했지만 플랫폼 별 문제로 supabase storage 서비스로 가기로 결정했습니다. 
 
 

문제 해결 과정

기존에 path_provider를 사용하면서 앱 내의 저장소 말고 앱 외부의 저장소를 이용해서 db 파일을 저장하고 싶었습니다. 
 
path_provider 내용을 보니 안드로이드만 앱 외부 저장이 가능하더군요. 
그리고 기기 내부의 공용 폴더인 download 폴더 안에 "moneytrackerData" 폴더가 만들어지지가 않더라구요. 
그래서 찾아낸 external_path 패키지입니다. 직관적으로 기기의 공용 폴더로 바로 접근이 가능합니다. 
아래는 download 폴더를 생성하는 코드입니다. 플랫폼 별로 조건문을 만들었습니다. 

 Future<Directory> getBackupDirectory() async {
    try {
      String backupDirPath;
      if (Platform.isAndroid) {
        String? downloadDir =
            await ExternalPath.getExternalStoragePublicDirectory(
                ExternalPath.DIRECTORY_DOWNLOADS);

        if (downloadDir == null) {
          throw FileSystemException('Download directory is not available.');
        }

        backupDirPath = '$downloadDir/moneytrackerData';
      } else if (Platform.isIOS) {
        Directory appDocumentsDir = await getApplicationDocumentsDirectory();
        backupDirPath = appDocumentsDir.path;
      } else {
        throw UnsupportedError('This platform is not supported');
      }

      Directory backupDir = Directory(backupDirPath);

      if (!(await backupDir.exists())) {
        await backupDir.create(recursive: true);
      }

      print(backupDir.path);
      return backupDir;
    } catch (e) {
      print("Error getting backup directory: $e");
      throw e;
    }
  }

 
 
 
하지만 안드로이드에서만 사용 가능합니다. 
 
 
ios에서 앱 외부의 데이터를 옮겨서 사용자가 직접 접근해서 데이터를 사용하는 방법이 있는데 
사용자 입장에서 굉장히 번거로운 작업이 될 것 같습니다. 
 
 
 
처음에 생각했던 안드로이드는 구글드라이브, ios icloud를 사용해서 각각 사용자에게 나눠서 할 까도 했지만.. 흠 사용자 입장에서 안드로이든, ios든 동일한 사용환경을 제공하는게 낫다라는 생각이 들어서 (후에 문제가 생기더라도 supabase만 해결하면 되니까..)
 supabase의 스토리지를 이용해서 앱 내의 데이터를 관리하도록 만들어봐야겠습니다. 
 
최대한 서버 지출을 아끼려고 했지만 .. 투자라 생각하고 해봐야겠네요..! 
 
 
 

문제 해결 방법 1

유저 플로우는 다음과 같습니다. 
 
1. 가계부 사용시에는 로그인이 필요없다. 
2. 사용자가 가계부 데이터의 백업을 원한다. 
3. 백업하기 페이지로 넘어간다. 
4. supabase sns 로그인을 진행한다. 
5. supabase에서 생성된 uuid를 통해서 해당 유저를 확인 후 storage 서비스를 이용하게 한다. 
6. 사용자는 1일 1회 백업서비스를 이용가능하다. (서버 사용 최소화)
7. 안드로이든, ios든 supabase에 로그인만 하면 바로 사용가능하기 때문에 편의성이 올라갈 것 같다. 
 
https://medium.com/@nandhuraj/supabase-storage-in-flutter-dc19744a552a

 

Supabase Storage in Flutter

Supabase Storage empowers Flutter developers to seamlessly integrate file storage capabilities into their applications. In this…

medium.com

 

반응형