Refactor: VideoPlayerWidget to display YouTube thumbnail and loading indicator

This commit is contained in:
Naresh Pratista 2024-11-26 23:00:44 +07:00
parent 777539418b
commit aeabb177a2
2 changed files with 39 additions and 14 deletions

View File

@ -1,2 +1 @@
const String baseUrl =
'https://e901-2001-448a-50a0-656c-cd9-ff82-635b-5b6e.ngrok-free.app/';
const String baseUrl = 'http://54.173.167.62/';

View File

@ -177,24 +177,50 @@ class VideoPlayerWidgetState extends State<VideoPlayerWidget> {
if (_youtubeController == null) {
return Container(
color: Colors.black,
child: const Center(
child: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.white),
child: Center(
child: Stack(
alignment: Alignment.center,
children: [
// Tambahkan thumbnail YouTube sebagai background
Image.network(
'https://img.youtube.com/vi/$_youtubeId/hqdefault.jpg',
fit: BoxFit.cover,
width: double.infinity,
height: double.infinity,
errorBuilder: (context, error, stackTrace) {
return Container(color: Colors.black);
},
),
const CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.white),
),
],
),
),
);
}
return YoutubePlayer(
controller: _youtubeController!,
showVideoProgressIndicator: true,
progressIndicatorColor: Colors.red,
progressColors: const ProgressBarColors(
playedColor: Colors.red,
handleColor: Colors.redAccent,
return YoutubePlayerBuilder(
player: YoutubePlayer(
controller: _youtubeController!,
showVideoProgressIndicator: true,
progressIndicatorColor: Colors.red,
progressColors: const ProgressBarColors(
playedColor: Colors.red,
handleColor: Colors.redAccent,
),
onReady: () {
// Gunakan metode load untuk transisi lebih halus
_youtubeController!.load(_youtubeId!);
_youtubeController!.pause();
},
),
onReady: () {
print('YouTube Player Ready');
builder: (context, player) {
return AnimatedOpacity(
opacity: _isLoading ? 0.0 : 1.0,
duration: const Duration(milliseconds: 300),
child: player,
);
},
);
}