플러터는 사진과 파일을 처리하기 위한 다양한 기능을 제공합니다. 사진을 가져오고 저장하는 방법부터 파일을 읽고 쓰는 방법에 이르기까지 다양한 기능들을 살펴보겠습니다.
1. 사진 가져오기
사진을 앱으로 가져오기 위해서는 image_picker
패키지를 사용할 수 있습니다. 이 패키지는 갤러리나 카메라에서 사진을 선택하고 가져올 수 있는 기능을 제공합니다. 아래는 image_picker
패키지를 사용하여 사진을 가져오는 예제 코드입니다.
import 'package:image_picker/image_picker.dart';
import 'package:flutter/cupertino.dart';
class MyImagePicker extends StatefulWidget {
@override
_MyImagePickerState createState() => _MyImagePickerState();
}
class _MyImagePickerState extends State<MyImagePicker> {
final picker = ImagePicker();
File? _image;
Future getImage() async {
final pickedFile = await picker.getImage(source: ImageSource.gallery);
setState(() {
if (pickedFile != null) {
_image = File(pickedFile.path);
} else {
print('No image selected.');
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Image Picker'),
),
body: Center(
child: _image == null
? Text('No image selected.')
: Image.file(_image!),
),
floatingActionButton: FloatingActionButton(
onPressed: getImage,
tooltip: 'Pick Image',
child: Icon(Icons.add_a_photo),
),
);
}
}
위의 예제 코드에서는 image_picker
패키지의 getImage
메서드를 통해 갤러리에서 사진을 선택하고 가져와서 _image
변수에 저장한 후에 화면에 보여주는 방식으로 동작합니다.
2. 사진 저장하기
사진을 플러터 앱 내부에 저장하기 위해서는 path_provider
패키지를 사용할 수 있습니다. 이 패키지는 파일 시스템의 경로를 얻는 기능을 제공합니다. 아래는 path_provider
패키지를 사용하여 사진을 저장하는 예제 코드입니다.
import 'package:path_provider/path_provider.dart';
import 'package:flutter/cupertino.dart';
class MyImageSaver extends StatelessWidget {
@override
Widget build(BuildContext context) {
saveImage() async {
final directory = await getApplicationDocumentsDirectory();
final file = File('${directory.path}/image.jpg');
final savedFile = await _image!.copy(file.path);
print('Image saved: ${savedFile.path}');
}
return Scaffold(
appBar: AppBar(
title: Text('Image Saver'),
),
body: Center(
child: ElevatedButton(
onPressed: saveImage,
child: Text('Save Image'),
),
),
);
}
}
위의 예제 코드에서는 path_provider
패키지의 getApplicationDocumentsDirectory
메서드를 통해 앱의 문서 디렉토리를 얻어와서 해당 디렉토리에 image.jpg
파일을 생성한 후에 _image
변수에 저장된 사진을 복사하여 저장하는 방식으로 동작합니다.
3. 파일 읽고 쓰기
파일을 읽고 쓰기 위해서는 dart:io
패키지를 사용할 수 있습니다. 이 패키지는 파일에 대한 다양한 작업을 처리할 수 있는 기능을 제공합니다. 예를 들어, 파일을 읽어서 내용을 출력하는 예제 코드는 아래와 같습니다.
import 'dart:io';
void main() {
final file = File('path/to/file.txt');
final contents = file.readAsStringSync();
print('File contents: $contents');
}
위의 예제 코드에서는 File
클래스의 인스턴스를 생성한 후에 readAsStringSync
메서드를 호출하여 파일의 내용을 읽어와서 출력하고 있습니다. 이 외에도 writeAsString
메서드를 사용하여 파일에 내용을 쓰는 등 다양한 작업을 수행할 수 있습니다.