본문 바로가기
TIL

20230911 TIL : 업보빔 맞는 중

by 김빵그 2023. 9. 11.

Today 요약

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

[] flutter 강의 3개


배운 점

1. flutter camera

flutter pub add camera
  • 자동으로 권한을 요청하며 사용자가 허용하지 않으면 에러를 반환

1-1 Android 

  • sdk 최소 버전 21 (android/app/build.gradle) 
minSdkVersion 21
 

camera | Flutter Package

A Flutter plugin for controlling the camera. Supports previewing the camera feed, capturing images and video, and streaming image buffers to Dart.

pub.dev

2. flutter permission_handler

flutter pub add permission_handler
 

permission_handler | Flutter Package

Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.

pub.dev

  • 핸들러 패키지를 사용하여 카메라 권한을 관리

2-1 isDenied / isPermanetlyDenied

Future<void> initPermissions() async {
  final cameraPermission = await Permission.camera.request();
  final cameraDenied =
        cameraPermission.isDenied || cameraPermission.isPermanentlyDenied;
        
}
  • cameraPermission: 카메라 권한을 관리하기 위한 권한 객체 Permission.camera와 같은 권한 유형에 대한 정보와 상태를 저장한다
  • isDenied : 권한이 거부된 경우 true 아니면 false 사용자가 카메라 권한을 거부했을시 true
  • isPermanetlyDenied : 영구적으로 거부된 경우 다시 묻지 않기 옵션 선택한 경우 true, 아니면 false
  • 위의 코드는 두가지 상황 중 하나라도 해당되는 경우 true

2-2 initCamera

 Future<void> initCamera() async {
    final cameras = await availableCameras();
    print(cameras);
  }
  //[CameraDescription(0, CameraLensDirection.back, 90), CameraDescription(1, CameraLensDirection.front, 270)]
  • 카메라가 얼마나 있는지 알아야 함 > 보통 사용자는 두개의 카메라 (전면, 후면)을  가지고  있다
  • 0  = back / 1 = front

 

3. flutter initState()

Future<void>  initPermissions() async {
    
}
@override
void initState() {
    super.initState();
    initPermissions();
}
  • initState는 flutter Lifecycle 중 하나인메서드 해당 위젯이 처음으로 생성될 때 초기화 작업을 수행하는 데 주로 사용된다
  • @override: 재정의
  • super.initState : 상위 클래스 state 클래스의 initState 메서드를 호출하는 역할. 상위 클래스의 초기화 코드를 실행시키고나서, 그 이후에 추가적인 초기화 작업을 할수 있도록 한다
  • initPermissions 비동기 함수 : 작업이 완료되는 것을 기다리지 않고 다른 작업을 계속 할 수 있다는 점

3-1 비동기

void main() {
  print('Start');
  fetchData();
  print('End');
}

void fetchData() async {
  await Future.delayed(Duration(seconds: 2)); // 비동기 작업 시뮬레이션
  print('Data fetched');
}
  • fetchData : 비동기 함수로 표시 await 키워드를 사용하여 Future.delayed  함수가 완료될 때까지 기다린다

저번주는 워크샵 함 다녀오고 나니 몸뚱아리가 너무 힘들어서 오래 쉬었다.. 안그래도 해외 출장 가기 전까지 야근틈틈히 해야하는데 ...내 체력아...ㅠ 2주안에 빡세게해서 완성하고 공부도 틈틈히 하는 갓생러가 되어야지