My flutter version 3.19. I use chewie: ^1.7.5 and video_player: ^2.8.3 for playing a video in FlutteBut, the Android emulator shows meaningless video images on the phone screen.
When I opened the page of the video, it played but didn't look expected butterfly video and not heard sound of it.
Emulator shows / Expected
My video player screen dart file codes:
import 'package:chewie/chewie.dart';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
class VideoScreen extends StatefulWidget {
const VideoScreen({super.key});
@override
State<VideoScreen> createState() => _VideoScreenState();
}
class _VideoScreenState extends State<VideoScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Video Player"),
),
body: const PlayerWidget(),
);
}
}
//----------PLAYER WIDGET SECTION
class PlayerWidget extends StatefulWidget {
const PlayerWidget({super.key});
@override
State<PlayerWidget> createState() => _PlayerWidgetState();
}
class _PlayerWidgetState extends State<PlayerWidget> {
late VideoPlayerController videoPlayerController;
late ChewieController chewieController;
bool isVideoInialized = false;
Future initilizeVideo() async {
videoPlayerController = VideoPlayerController.networkUrl(Uri.parse(
'https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4'));
await videoPlayerController.initialize();
chewieController = ChewieController(
videoPlayerController: videoPlayerController,
autoPlay: true,
looping: true);
videoPlayerController.initialize().then((_) => setState(() {
isVideoInialized = true;
}));
}
@override
void initState() {
super.initState();
// videoPlayerController = VideoPlayerController.networkUrl(Uri.parse(
// 'https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4'));
// chewieController = ChewieController(
// videoPlayerController: videoPlayerController,
// autoPlay: true,
// looping: true);
// videoPlayerController.initialize().then((_) => setState(() {
// isVideoInialized = true;
// }));
initilizeVideo();
}
@override
Widget build(BuildContext context) {
if (isVideoInialized) {
return AspectRatio(
aspectRatio: videoPlayerController.value.aspectRatio,
child: Chewie(controller: chewieController),
);
} else {
return const CircularProgressIndicator();
}
}
@override
void dispose() {
videoPlayerController.dispose();
chewieController.dispose();
super.dispose();
}
}
UPDATED INFORMATION:
It looks like the emulator has a problem.

