본문 바로가기
IT 정보/플러터 flutter

플러터 앱 내에 데이터 저장하기 path_provider

by 쩜오개미 2024. 5. 18.

flutter 변수 데이터는 앱을 완전히 종료하면 초기화되는 것으로 알고 있다.

 

앱을 다시 실행해도 유저가 변경한 변수 데이터를 유지하려면

유저가 변수 값을 수정 할 때

데이터를 서버에 저장 후 재 실행 시 불러오거나

앱 내에 텍스트 파일로 저장했다가 재 실행 시 불러오는 방법이 있다.

(앱 외부 일반 폴더에 파일을 저장할 수도 있지만 추가 권한이 필요하다

이 문서에서는 앱 내부 비공개 폴더에 파일을 저장하는 법만 다루겠다.)

 

나는 첫 방법으론 파이어베이스 데이터베이스를 쓰고 있고 

두번째 방법으론 path_provider 함수를 쓰고 있다. 

 

설정은 이렇다

pubspec.yaml 에 디펜던시에 path_provider 설치

설치법은 

 pubspec.yaml 디펜던시 쪽에 직접 쓰거나 (하단 예시)

dependencies:
  flutter:
    sdk: flutter


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  path_provider: ^2.1.1

 

하단 터미널 terminal에 

flutter pub add path_provider 을 쓰는 방법도 있다.

 

 

사용하려는 dart 문서에서 일단 패키지를 임포트한다.

import 'package:path_provider/path_provider.dart';
import 'dart:io';

 

 

(어차피 임포트는 까먹어도 빨간 전구 눌러서 애러 해결법 중 선택하면 자동으로 입력 해준다)

 

 

다음 클래스 내에 변수 선언할 수 있는 곳에서 이렇게 선언하자 

 

    Directory appDocDir = await getApplicationDocumentsDirectory(); //내부 저장소 가져옴
    String appDocPath = await appDocDir.path; // 내부 저장소 주소 가져옴
    var filePath = await File("$appDocPath/text.txt"); // 내부 저장소 주소에다 text.txt 텍스트 파일 만듦

 

 

그다음은 파일에 쓰는 부분.

 

일단 파일에 값 있는지 체크 먼저 할 수 있다.

 if (await filePath.exists() == false) { // 파일에 값 없다 
      print('노 파일');

     // 여기서 파일에 값 생성하든 안하든 함 

} else {  // 파일에 값 있다

   // 여기서 파일 내에 데이터 저장하든 함

}

 

파일 내에 값 있는지 것이 확실하거나 

값이 있든 없든 그냥 실행하면 되는 상황이면

위의 코드는 활용할 일이 없다.

 

아래 코드는

파일에 데이터를 입력하는 코드

filePath.writeAsString( 변수 또는 'String' 직접 입력 );

 

여기서 변수는 String 변수여야 하겠다.


아래 코드는

데이터 불러오는 코드

// 하단은 file 이라는 변수에 파일의 텍스트 값을 전달 하는 코드
var file = await filePath.readAsString();

//하단은 서버 관련 작업 시 동기화 처리 필요할 시 해당 코드 쓰라는데 오래되서 까먹음
filePath.readAsString().then((value) async {
  // 서버 관련 작업 
}

 

728x90
반응형

댓글