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 {
// 서버 관련 작업
}
'IT 정보 > 플러터 flutter' 카테고리의 다른 글
플러터 파이어베이스 익명 로그인일 시 유저 uid 가져오기 (0) | 2024.05.29 |
---|---|
플러터 Textfield에 변수를 초기값으로 저장 (0) | 2024.05.18 |
flutter 버튼을 누르면 특정 텍스트를 클립보드에 복사하는 코드 (0) | 2024.05.18 |
애드몹 app-ads.txt 을 깃허브에 올려서 구글 플레이 콘솔에 등록하기 (0) | 2024.02.20 |
firebase Realtime Database Json 내보내기 요령 google spreadsheet _의 부가 기능 Export sheet data (0) | 2024.02.06 |
댓글