Today 요약
[✅] flutter 강의 1개
[✅] dart 강의 11강 1개
[✅] 프로그래머스 코딩테스트 1문제
배운 점
1. flutter camera 비디오 녹화후 프리뷰 확인하기
await _cameraController.prepareForVideoRecording();
Future<void> _startRecording(TapDownDetails _) async {
if (_cameraController.value.isRecordingVideo) return;
await _cameraController.startVideoRecording();
}
Future<void> _stopRecording() async {
if (!_cameraController.value.isRecordingVideo) return;
final video = await _cameraController.stopVideoRecording();
// print(file.name);
// print(file.path);
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => VideoPreviewScreen(video: video),
),
);
}
1-1 _cameracontroller
- 카메라와 관련된 작업을 제어하기 위한 컨트롤러
1-2 _startRecording
- if 조건문은 이미 녹화가 진행중인 경우 아무작업도 수행하지 않도록 하는 것 isRecordingVideo 속성은 현재 비디오 녹화가 진행중인지 여부를 확인하는데 사용한다
- startVideoRecording()을 호출하여 비디오 녹화를 시작한다 비동기로 호출되므로 await 키워드를 사용하여 비디오 녹화가 시작되고 완료될 때까지 기다린다
1-3 _stopRecording
- 비디오 녹화를 중지하고 저장하는데 사용
- if 녹화가 진행중이 아닌 경우 아무작업도 수행하지 않는다
- stopVideoRecording()을 호출하여 비디오 녹화 중지하고 녹화된 비디오를 반환하여 video 변수에 저장
1-4 VideoPreview
class VideoPreviewScreen extends StatefulWidget {
final XFile video;
const VideoPreviewScreen({
super.key,
required this.video,
});
@override
State<VideoPreviewScreen> createState() => _VideoPreviewScreenState();
}
class _VideoPreviewScreenState extends State<VideoPreviewScreen> {
late final VideoPlayerController _videoPlayerController;
Future<void> _initVideo() async {
_videoPlayerController =
VideoPlayerController.file(File(widget.video.path));
await _videoPlayerController.initialize();
await _videoPlayerController.setLooping(true);
await _videoPlayerController.play();
setState(() {});
}
@override
void initState() {
super.initState();
_initVideo();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: _videoPlayerController.value.isInitialized
? VideoPlayer(_videoPlayerController)
: null,
);
}
}
- _videoPlayerController : 비디오 파일을 재생하는데 사용
초기화
- _videoPlayerController : 비디오 파일로 초기화
- await _videoPlayerController.initialize() 를 사용하여 비디오 컨트롤러를 초기화, 비디오를 재생하기 전에 반드시 초기화해야한다
- setLooping(true) : 끝날 때 자동으로 루프되도록 설정
- play() : 호출하여 비디오를 재생
- setState : ui 업데이트 상태변경시키기
후후
어제 배운 애니메이션 flutter 오늘 데모 버전 앱에 적용했다 너무나도 뿌듯 ㅎㅎ
'TIL' 카테고리의 다른 글
20230927 TIL (0) | 2023.09.27 |
---|---|
20230925 TIL (0) | 2023.09.25 |
20230918 TIL :: 코로나에 진 몸뚱아리 (0) | 2023.09.18 |
20230912 TIL :: 아무생각없이 공부만 한 날 (0) | 2023.09.12 |
20230911 TIL : 업보빔 맞는 중 (0) | 2023.09.11 |