Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 로우코드#lowcode#erp#관리시스템#시트메이트#시트메타#엑셀업로드#엑셀다운로드#그리드#데이터관리#생산관리시스템#로그관리#히스토리#입력체크
- flutter#sqlite#chatGPT#
- PDF#챗봇검색#서비스#GPT4#PGT3.5#GPT#랭체인#챗봇#CHATBOT#LLM#문서검색
- figma#flutter#dhwise#피그마#플러터#피그마 to 플러터 #figma to flutter
- 플러터#sms#mms#문자보내기
- flutterfire configure#파이어베이스#플러터
- 플러터#
- 마이봇#핸드폰대체#
- 마이봇#아이폰#아이폰심사#IT고시#
- 마이봇#API 설정
- 로우코드#ERP#관리시스템#상품관리#선택박스#자동화프로그램
- 마이봇#pdf챗봇#상담챗봇#faq챗봇#chatgpt#랭체인#llm
- postgres#vector
- 마이봇#문서챗봇#PDF#TEXT#유투브#챗봇만들기#랭체인# langchain#벡터데이터#자료검색#챗GPT#GPT4#챗지피티
- flutter#채팅창@메모창#url링크#날짜추가
- ax5#tree#grid#단계별 펼치기# depth #시트메타
- 마이봇#chatgpt#ai#인공지능
- flutter#ios#앱개발#마이봇#
- #창작#SNS#스포츠#반려동물#연애#과제#레시피#활동#건강#운세#글쓰기#비즈니스 #AI비서#챗GPT#CHATGPT
- 커피#그라인더#통돌이 오픈 #로스팅#드립커피#생두#원두
- 임대사업자#리걸테크#legaltech#마이봇#챗봇#법률챗봇#임대사업자챗봇#chatgpt#
- 쇼핑몰관리시스템#매입관리#시트메타#매입채널#엑셀업로드
- 마이봇#챗봇
- mediasaop#webrtc#미디어서버#
- fcm#메세지전송#안드로이드메세지#플러터메세지전송
- 광동온더그린#프랜즈#가상CC#스크린골프#
- 펫버틀러#서버연동#프로필등록#로그인서버연동#이미지#동영상#업로드용 화면#앱개발#플러터#반려생활#로딩바#loading bar#
- 시트메타#관리시스템#테이블연동#품목관리
- firebase#message#메세지#플러터#안드로이드
- PDF검색#PDF검색챗봇#NEXTJS#스터디#스타트업#랭체이#langchain#prisma#sqlite#
Archives
- Today
- Total
혼자서 앱 만드는 개발자 함께하는 AI 세상
[펫버틀러] 반려 동물 고민 상담 앱 - 개발 11 일차 (동영상 썸네일 / 플레이어 적용 ) 본문
반응형
- 동영상 플레이를 하기 위해서 기본 패키지를 적용했다. 다른패키지는 패키지 dependencies 때문에 적용에 실패했다.
- 섬네일 관련 video_thumbnail 적용해서 사용 했다.
dependencies
video_player: ^2.4.10
video_thumbnail: ^0.5.3
- 섬네일 관련 소스 VideoThumbnail.thumbnailFile 부분으통해 섬네일을 만들고 byte 형태로 받아서 테이블 컬럼 BLOB타입으로 등록하여 화면에 뿌린다.
if (response.statusCode == 200) {
// 업로드 후 메모 테이블에 등록
setState(() async {
isLoading = false;
final thumbnailPath = await VideoThumbnail.thumbnailFile(
video: image.path,
imageFormat: ImageFormat.JPEG,
maxWidth:
128, // specify the width of the thumbnail, let the height auto-scaled to keep the source aspect ratio
quality: 25,
);
imageFile = File(thumbnailPath!);
final byteFile = ImageProcess.decodeImage(imageFile!.readAsBytesSync());
_byteImage = base64Encode(ImageProcess.encodePng(byteFile!));
onSendMessage("$fileName",
TypeMessage.video, _byteImage.toString());
});
- 메모장에 동영상 화면 섬네일로 보여주고 중간에 플레이 이미지를 넣는다.
//적용 화면
else if (messageMemo.type == TypeMessage.video)
Flexible(
child: Container(
decoration: BoxDecoration(),
child: TextButton(
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) =>
CustomerPlayer(url: messageMemo.content)),
);
},
child: movieImage(messageMemo.etc1),
),
))
// 동영상 이미지 아이콘 넣기
Widget movieImage(
byteImage,
) {
var height = MediaQuery.of(context).size.height;
var width = MediaQuery.of(context).size.width;
Image img = Image.memory(
const Base64Decoder().convert(byteImage),
fit: BoxFit.cover,
);
return Stack(
children: <Widget>[
Container(
width: width,
height: 200,
color: Color.fromARGB(255, 254, 111, 2),
child: ClipRRect(
borderRadius: BorderRadius.circular(20.0), //or 15.0
child: Image(image: img.image),
)),
const Positioned.fill(
child: Align(
alignment: Alignment.center,
child: Icon(
Icons.play_circle,
color: Colors.black,
size: 50,
)))
],
);
}
- 동영상플레이 소스를 찾다보니 단순 패키지를 이용해서 적용한 소스를 수정해서 반영했다.
-
CustomerPlayer(url: messageMemo.content)), ==> 이부분
- custom_video_player/example at main · devmemory/custom_video_player · GitHub
- 위 패키지를 참조하여 반영한 소스 뒤로가기와 Metrial 감싸기 등을 적용했다.
import 'package:petbutler/custom_video_player.dart';
import 'package:flutter/material.dart';
class CustomerPlayer extends StatelessWidget {
final String url;
const CustomerPlayer({Key? key, required String this.url}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
var controller = CustomVideoController(videoUrl: url, aspectRatio: 16 / 9);
return WillPopScope(
onWillPop: () { // 뒤로가기 눌렀을 때 메모로 돌아가 위해 처리
controller.dispose();
Navigator.pop(context);
return Future(() => false);
},
child: Material( // Material로감싸줘야 에러가 안난다......
child: VideoPlayerWidget(
widgetSize: const Size(400, 300),
placeHolder: const Center(
child: CircularProgressIndicator(),
),
videoOption: VideoOption.full,
videoController: controller,
)));
}
}
728x90
반응형
'펫버틀러' 카테고리의 다른 글
[펫버틀러] 반려 동물 고민 상담 앱 - 개발 13 일차 (설정 화면 만들기) (0) | 2023.01.23 |
---|---|
[펫버틀러] 반려 동물 고민 상담 앱 - 개발 12 일차 (프로필화면에 달력적용) (2) | 2023.01.11 |
[펫버틀러] 반려 동물 고민 상담 앱 - 개발 10 일차 (이미지/동영상 첨부 업로드 시 로딩 바 prograss loading bar ) (0) | 2023.01.01 |
[펫버틀러] 반려 동물 고민 상담 앱 - 개발 9 일차 (메모 이미지 동영상 첨부 화면 개발 / 로그인 토큰 처리 확인 ) (0) | 2022.12.28 |
[펫버틀러] 반려 동물 고민 상담 앱 - 개발 8 일차 (로그인페이지 서버연동) (2) | 2022.12.27 |
Comments