VideoPlayerController? _videoController;
Future<void>? _initializeVideoPlayerFuture;
initState(){
super.initState();
_init();
}
_init(){
_videoController = VideoPlayerController.network(
_videoUrl!,
videoPlayerOptions: VideoPlayerOptions(
mixWithOthers: true,
)
);
_initializeVideoPlayerFuture = _videoController!.initialize().then((_) {
_videoController!.setVolume(0);
_videoController!.setLooping(true);
double _videoWidth = _videoController!.value.size.width;
double _videoHeight = _videoController!.value.size.height;
print('_videoWidth= $_videoWidth _videoHeight= $_videoHeight');
print('aspectRatio= ${_videoController!.value.aspectRatio}');
_sizeWidth = _videoWidth;
_sizeHeight = _videoHeight;
double _aspectRatio = _videoHeight / _videoWidth;
_logic.videoAspectRatio = _aspectRatio;
print('videoAspectRatio===== ${_logic.videoAspectRatio}');
_videoController!.play();
_isVideoInit = true;
setState(() {});
});
}
_videoPlayerO(){
return FutureBuilder(
future: _initializeVideoPlayerFuture,
builder: (BuildContext context, value) {
if (value.connectionState == ConnectionState.done) {
return AspectRatio(
aspectRatio: _videoController!.value.aspectRatio,
child: VideoPlayer(_videoController!),
);
} else {
return Center(
child: _coverImageView(showLoading: true)
);
}
},
);
}
_coverImageView({bool? showLoading}){
return Stack(
alignment: Alignment.center,
children: [
_logic.articleDetail!.articlePic != null ?
Utils().roundedImage(_logic.articleDetail!.articlePic!.last.url, 2,
fit: BoxFit.cover, borderColor: Colors.black)
: SizedBox(width: double.infinity, height: double.infinity),
CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.white),
strokeWidth: 2,
)
],
);
}