반응형
안녕하세요? image_picker를 간단하게 구현해보겠습니다. 대부분 앱이라면 image_picker 기능 정도는 담고 있습니다.
이 글을 통해 갤러리에서 사진을 선택하여 추가하는 방법과 카메라를 열어서 사진을 추가하는 방법을 알아봅니다.
Version
// pubspec.yaml에 추가합니다. 포스팅 당시 제가 사용한 버전은 ^0.8.5+3 입니다.
image_picker: ^0.8.5+3
android 기본설정
0.8.1 version 부터는 multiple image picker가 지원되는데 Andoid 4.3이거나 그보다 더 높아야 합니다.
ios 기본설정
1. 0.8.1 version 부터 ios 버전 14이거나 그보다 높은 버전이 필요합니다.
2. <project root> - ios - Runner - Info.plist 에 추가해줍니다.
// dict태그 아래에 들여쓰기 맞춰서 넣어주세요
<dict>
<key>NSPhotoLibraryUsageDescription</key> // 포토 라이브러리 권한
<string>PhotoLibraryUsagePermission</string>
<key>NSCameraUsageDescription</key> // 카메라 권한
<string>CameraUsagePermission</string>
<key>NSMicrophoneUsageDescription</key> // 동영상 마이크 권한
<string>MicrophoneUsagePermission</string>
...
</dict>
android 기본설정
별도로 설정해줄 것은 없습니다. 하지만 메모리 사용량이 많을 경우 안드로이드 시스템에서 이미지 피커를 사용할 때 앱 자체를 임의로 종료시킬 가능성이 있기 때문에 방지하기 위한 코드가 필요합니다.
Future<void> getLostData() async {
final LostDataResponse response =
await picker.retrieveLostData();
if (response.isEmpty) {
return;
}
if (response.files != null) {
for (final XFile file in response.files) {
_handleFile(file);
}
} else {
_handleError(response.exception);
}
}
앨범에서 사진 선택하기 코드
void _getImageFileFromPhotoLibrary() async {
try {
final ImagePicker _picker = ImagePicker();
// Pick an image
final XFile? image = await _picker.pickImage(source: ImageSource.gallery);
if (image == null) return;
final imageTemp = File(image.path);
setState(() => this.image = imageTemp);
} on PlatformException catch (e) {
print('Failed to pick Image: $e');
}
}
ElevatedButton(
onPressed: () async {
await _getImageFileFromPhotoLibrary();
},
child: Text('Pick image')),
카메라 선택하기 코드
//카메라 선택하기 기능은 시뮬레이터에서는 작동하지 않습니다.
ElevatedButton(
onPressed: () async {
await _picker.pickImage(source: ImageSource.camera);
},
child: Text('Pick photo')),
구현 화면
반응형
'Flutter' 카테고리의 다른 글
[Flutter Favorite] flutter_local_notifications 예시코드 (0) | 2022.07.27 |
---|---|
[Flutter Favorite] cached_network_image 구현코드 (0) | 2022.07.20 |
[Flutter Favorite] url_launcher web, phone, sms, email 예시코드 (0) | 2022.07.12 |
[Flutter Favorite] WebView화면에서 플러터 화면으로 돌아오기 구현 (0) | 2022.07.10 |
[Flutter] splash 화면 수정하는 방법 (0) | 2022.06.16 |