
import 'package:image_picker/image_picker.dart';
import 'dart:io';
메인에 임포트 추가
<key>NSPhotoLibraryUsageDescription</key>
<string>사진첩좀 써도 됩니까</string>
<key>NSCameraUsageDescription</key>
<string>카메라좀 써도 됩니까</string>
<key>NSMicrophoneUsageDescription</key>
<string>마이크 권한좀 제발</string>
팝업 띄우기
권한 요청은 아님.

카메라 띄우는 코드
var picker = ImagePicker();
var image = await picker.pickImage(source:ImageSource.camera);
갤러리 띄우는 코드
var picker = ImagePicker();
var image = await picker.pickImage(source:ImageSource.gallery);

pickVideo(source:ImageSource.gallery);
pickVideo(source:ImageSource.camera);
- 동영상 선택
pickMultiImage()
- 여러장 고르는 코드
멀티의 경우
이런식으로 사용
userImage[0] = File(image.path);
File 함수가 기본적으로 하나씩 처리가 가능.
map으로 다 하나씩 매핑 가능
pickedImages.map((xfile) => File(xfile.path)).toList();
map 메서드를 사용하면 리스트의 각 요소를 변환하여 새로운 리스트를 생성할 수 있습니다. 이 경우, XFile 객체를 File 객체로 변환하는 작업을 리스트의 모든 요소에 대해 수행합니다.
if 사용하는 이유는 유저가 사진을 고르지 않을 수 도 있으므로 null 처리.
setState(() {
userImage = File(image.path);
});
Image.file(userImage);


Image resize
BoxFit.fill:
- 이미지의 종횡비를 무시하고, 컨테이너의 전체 공간을 채우도록 크기를 조정합니다.
BoxFit.contain:
- 이미지의 종횡비를 유지하면서, 이미지가 컨테이너 내에 완전히 들어가도록 크기를 조정합니다.
BoxFit.cover:
- 이미지의 종횡비를 유지하면서, 이미지가 컨테이너의 전체 공간을 채우도록 크기를 조정합니다.
BoxFit.fitWidth:
- 이미지의 종횡비를 유지하면서, 컨테이너의 너비에 맞추어 크기를 조정합니다
BoxFit.fitHeight:
- 이미지의 종횡비를 유지하면서, 컨테이너의 높이에 맞추어 크기를 조정합니다
BoxFit.scaleDown:
- 이미지의 종횡비를 유지하면서, 원래 크기보다 클 경우에만 이미지를 축소합니다
BoxFit.none:
- 이미지의 원래 크기를 유지합니다


image 파일의 형식에 따라서 if 문으로 어떻게 할지 Image.file or Image.network 등으로 처리