CameraPreview(controller!)

프랭크 IT·2023년 10월 15일
0

flutter

목록 보기
23/28
post-custom-banner

body: CameraPreview(controller!), 코드는 Flutter에서 카메라의 미리보기 화면을 출력하는 부분입니다. 여기서 CameraPreview는 카메라의 실시간 미리보기를 화면에 출력하는 위젯이며, controller!는 이 미리보기를 제어하는 컨트롤러입니다.

  • CameraPreview: 이 위젯은 카메라의 실시간 미리보기 화면을 앱에 표시합니다. 이 위젯을 사용하려면 일반적으로 camera 패키지를 설치해야 합니다.
  • controller!: 카메라의 상태나 미리보기를 제어하는 객체입니다. 이 컨트롤러는 카메라를 초기화하고, 사진을 찍거나 동영상을 녹화하는 등의 작업을 관리합니다.

! 기호는 Dart의 null-safety에서 사용되며, 개발자가 해당 변수가 null이 아님을 확신할 때 사용합니다.

예를 들어, 카메라를 초기화하고 CameraPreview 위젯을 사용하는 간단한 예는 다음과 같습니다.

import 'package:camera/camera.dart';
import 'package:flutter/material.dart';

class CameraScreen extends StatefulWidget {
  
  _CameraScreenState createState() => _CameraScreenState();
}

class _CameraScreenState extends State<CameraScreen> {
  late CameraController _controller;

  
  void initState() {
    super.initState();
    _initializeCamera();
  }

  Future<void> _initializeCamera() async {
    final cameras = await availableCameras();
    final firstCamera = cameras.first;

    _controller = CameraController(
      firstCamera,
      ResolutionPreset.high,
    );

    _controller.initialize().then((_) {
      if (!mounted) {
        return;
      }
      setState(() {});
    });
  }

  
  void dispose() {
    _controller.dispose();  // CameraController 리소스 해제
    super.dispose();
  }

  
  Widget build(BuildContext context) {
    if (!_controller.value.isInitialized) {
      return Container();
    }
    return Scaffold(
      body: CameraPreview(_controller),  // CameraPreview는 카메라의 화면을 출력하는 위젯입니다.
    );
  }
}

이 예시에서는 CameraController를 초기화하고, 이를 CameraPreview 위젯에 전달하여 카메라의 미리보기를 출력합니다. 또한, 위젯이 메모리에서 제거될 때 dispose() 메서드를 통해 컨트롤러의 리소스를 해제합니다.

profile
AWS, Vue, Java, flutter, Mongodb, Python, Git , EKS, Docker, 독서, 영어, 에어로빅, 자전거, 농구, 바둑, 풋살, 복싱, Guitar, 글쓰기, 랭체인
post-custom-banner

0개의 댓글