본문 바로가기
TIL

20230912 TIL :: 아무생각없이 공부만 한 날

by 김빵그 2023. 9. 12.

Today 요약

[] 프로그래머스 코딩테스트 Lv0 1문제

[] flutter 강의 2개


배운 점

 

Take a picture using the camera

How to use a camera plugin on mobile.

docs.flutter.dev

1. flutter camera selfie Mode

1-1 camera 패키지 

flutter pub add camera

1-2 CameraController

bool _isSelfieMode = false;
late CameraController _cameraController;
Future<void> initCamera() async {
	final cameras = await availableCameras(); 
    if(cameras.isEmpty){return;}
    
    _cameraController = CameraController(
    	cameras[_isSelfieMode ? 1 : 0],
        ResolutionPreset.ultraHigh,
    );
    
    await _cameraController.initialize();
}
  • _cameraController 선언
  • initCamera : 비동기로 실행되며 카메라 초기화 작업을 수행한다
  • availableCameras : 사용 가능한 카메라 목록을 가져옴 이 목록은 Flutter의 camera 패키지에서 제공. 이 역시 비동기로  await 사용
  • 카메라가 없는 경우 isEmpty 조건을 사용해 사용 가능한 카메라 목록이 비어있는지 확인 만약 그렇다면 아무 작업도 수행하지 않고 함수 종료한다
  • _cameraContoller 초기화 : 생성하고 설정한다 _isSelfieMode 변수를 기반으로 사용할 카메라 선택
  • ResolutionPreset.ultraHigh 를 사용해 카메라 해상도도 설정
  • _cameraController.initialize()를 호출해 카메라 초기화 > 이 동작은비동기 작업이며 카메라가  준비될 때까지 기다린다

1-3 토글 함수

 Future<void> _toggleSelfieMode() async {
    _isSelfieMode = !_isSelfieMode;
    //isSelfieMode 값을 바꿔주고 initCamera를 한번 더 실행 후 isSelfieMode가 달라짐 > 카메라가 바뀌는 것
    await initCamera();
    setState(() {});
  }
  • _isSelfieMode 변수의 값을 반전 true - false
  • await initCamera() _isSelfieMode 값을 변경후 initCamera 함수를 다시 호출하여 카메라 재 초기화하여 카메라 모드 변경이 된다
  •  

1-4 적용하기

Stack(
	children :[ 
    	CameraPreview(_cameraController),
        IconButton(
          color: Colors.white,
          onPressed: _toggleSelfieMode,
          icon: const Icon(Icons.cameraswitch),
		),
    ]
)

 

2. flutter camera  flash Mode

2-1 flashmode

late FlashMode _flashMode;
Future<void> initCamera() async {
    final cameras = await availableCameras();

    if (cameras.isEmpty) {
      return;
    }

    _cameraController = CameraController(
      cameras[_isSelfieMode ? 1 : 0],
      ResolutionPreset.ultraHigh,
    );

    await _cameraController.initialize();

    _flashMode = _cameraController.value.flashMode;
    //휴대폰 카메라가 가진 값으로 flashmode 값을 초기화
  }

2-2 flash 토글 함수

 Future<void> _setFlashMode(FlashMode newFlashMode) async {
    await _cameraController.setFlashMode(newFlashMode); //Future
    _flashMode = newFlashMode;
    setState(() {});
  }

2-3 버튼에 적용

 IconButton(
      color: _flashMode == FlashMode.off
          ? Colors.amber.shade200
          : Colors.white,
      onPressed: () => _setFlashMode(FlashMode.off),
      icon: const Icon(Icons.flashlight_on),
    ),
  • FlashMode.off
  • FlashMode.always
  • FlashMode.auto
  • FlashMode.torch

'TIL' 카테고리의 다른 글

20230919 TIL  (0) 2023.09.19
20230918 TIL :: 코로나에 진 몸뚱아리  (0) 2023.09.18
20230911 TIL : 업보빔 맞는 중  (1) 2023.09.11
20230905 : 오늘도 해낸 나 아주 칭찬  (0) 2023.09.05
20230904 TIL : 믿음의 월요일 라스고  (0) 2023.09.04