[flutter] 플러터에서 path_provider를 이용하여 사진 저장하기
이번에는 Flutter에서 path_provider
패키지를 사용하여 사진을 저장하는 방법에 대해 알아보겠습니다. path_provider
패키지는 앱의 파일 시스템 경로를 찾을 수 있도록 도와줍니다. 이를 통해 플러터 앱에서 파일을 저장하고 접근할 수 있습니다.
1. path_provider
패키지 추가하기
프로젝트의 pubspec.yaml
파일에 path_provider
패키지를 추가해야합니다. 아래의 예시를 따라주세요:
dependencies:
flutter:
sdk: flutter
path_provider: ^2.0.5
패키지를 추가한 후에는 터미널에서 flutter pub get
명령어를 실행하여 패키지를 다운로드 및 의존성을 설정해야합니다.
2. 사진 저장하기
path_provider
패키지를 사용하여 사진을 저장하는 예시 코드는 다음과 같습니다:
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
class SavePhotoScreen extends StatefulWidget {
@override
_SavePhotoScreenState createState() => _SavePhotoScreenState();
}
class _SavePhotoScreenState extends State<SavePhotoScreen> {
File? _image;
Future<void> savePhoto(BuildContext context) async {
// 디바이스의 외부 저장소 폴더 경로 얻기
Directory? appDir = await getExternalStorageDirectory();
if (appDir == null) return;
// 폴더 생성
Directory imagesDir = Directory("${appDir.path}/images");
if (!await imagesDir.exists()) {
await imagesDir.create(recursive: true);
}
// 이미지 파일 생성 및 저장
File newImage = File("${imagesDir.path}/my_photo.jpg");
await _image!.copy(newImage.path);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("사진 저장됨: ${newImage.path}")),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("사진 저장"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_image != null ? Image.file(_image!) : Container(),
SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
// 이미지 선택
FilePickerResult? result = await FilePicker.platform.pickFiles(
type: FileType.image,
);
if (result != null) {
setState(() {
_image = File(result.files.single.path!);
});
}
},
child: Text("사진 선택"),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _image != null
? () {
savePhoto(context);
}
: null,
child: Text("사진 저장"),
),
],
),
),
);
}
}
위의 코드는 플러터에서 사진 선택 후 외부 저장소에 저장하는 간단한 예제입니다. getExternalStorageDirectory
함수를 통해 디바이스의 외부 저장소 경로를 얻고, Directory
를 사용하여 폴더를 생성한 후, File
을 만들어 선택한 이미지를 해당 폴더에 복사하여 저장합니다.
3. 실행 및 결과 확인
위의 예시 코드를 사용하여 앱을 실행하고 사진을 선택한 후 “사진 저장” 버튼을 누르면 이미지가 지정한 경로에 저장되는 것을 확인할 수 있습니다.
이렇게 path_provider
패키지를 이용하여 플러터 앱에서 사진을 저장할 수 있습니다. 이를 통해 사용자의 사진을 앱 내부에 저장하거나 외부로 공유하는 기능을 구현할 수 있습니다.
더 자세한 정보는 path_provider 패키지 공식 문서를 참고하시기 바랍니다.