ImagePicker

샤워실의 바보·2024년 2월 15일
0
post-thumbnail
post-custom-banner
import 'package:camera/camera.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:image_picker/image_picker.dart'; // 갤러리나 카메라에서 이미지를 선택하기 위한 ImagePicker 패키지를 임포트합니다.
import 'package:permission_handler/permission_handler.dart';
import 'package:tiktok_clone/constants/gaps.dart';
import 'package:tiktok_clone/constants/sizes.dart';
import 'package:tiktok_clone/features/videos/video_preview_screen.dart';

class VideoRecordingScreen extends StatefulWidget {
  const VideoRecordingScreen({super.key});

  
  State<VideoRecordingScreen> createState() => _VideoRecordingScreenState();
}

class _VideoRecordingScreenState extends State<VideoRecordingScreen>
    with TickerProviderStateMixin {
  bool _hasPermission = false;
  bool _isSelfieMode = false;
  late final AnimationController _buttonAnimationController = AnimationController(
    vsync: this,
    duration: const Duration(milliseconds: 200),
  );
  late final Animation<double> _buttonAnimation = Tween(begin: 1.0, end: 1.3).animate(_buttonAnimationController);
  late final AnimationController _progressAnimationController = AnimationController(
    vsync: this,
    duration: const Duration(seconds: 10),
    lowerBound: 0.0,
    upperBound: 1.0,
  );
  late FlashMode _flashMode;
  late CameraController _cameraController;

  Future<void> _onPickVideoPressed() async {
    final video = await ImagePicker().pickVideo(
      source: ImageSource.gallery, // ImagePicker를 사용하여 갤러리에서 비디오를 선택합니다.
    );
    if (video == null) return;

    if (!mounted) return;

    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => VideoPreviewScreen(
          video: video,
          isPicked: true, // 사용자가 선택한 비디오를 VideoPreviewScreen으로 전달합니다.
        ),
      ),
    );
  }

  // 이하 코드는 VideoRecordingScreen의 나머지 부분입니다.
  // 카메라 권한 확인, 카메라 초기화, 비디오 녹화 시작 및 정지 로직, UI 구성 등을 포함합니다.
  // 각 기능의 세부적인 실행 방법과 비즈니스 로직이 구현되어 있습니다.

  
  Widget build(BuildContext context) {
    // UI 구성 부분입니다. 사용자에게 카메라 미리보기와 제어 버튼을 보여줍니다.
    // 갤러리에서 비디오를 선택할 수 있는 버튼도 포함되어 있습니다.
    return Scaffold(
      backgroundColor: Colors.black,
      body: // 레이아웃과 버튼 구성,
    );
  }
}

이 코드는 VideoRecordingScreen 내에서 ImagePicker 패키지를 사용하여 사용자가 갤러리에서 비디오를 선택할 수 있게 합니다. 사용자가 비디오를 선택하면, ImagePicker().pickVideo(source: ImageSource.gallery) 메소드를 통해 비디오 파일을 가져온 후, VideoPreviewScreen으로 이동하여 선택한 비디오를 미리 볼 수 있습니다. 이 과정에서 isPicked: true 파라미터는 비디오가 사용자에 의해 직접 선택되었음을 나타냅니다.

profile
공부하는 개발자
post-custom-banner

0개의 댓글