In this video player widget, while tapping any where on the widget, it should automatically go full-screen mode always. The code I've used is here.
// Automatic FlutterFlow imports
import '/backend/backend.dart';
import '/backend/schema/structs/index.dart';
import '/backend/schema/enums/enums.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/widgets/index.dart'; // Imports other custom widgets
import '/custom_code/actions/index.dart'; // Imports custom actions
import '/flutter_flow/custom_functions.dart'; // Imports custom functions
import 'package:flutter/material.dart';
// Begin custom widget code
// DO NOT REMOVE OR MODIFY THE CODE ABOVE!
import 'package:video_player/video_player.dart';
import 'package:chewie/chewie.dart';
import 'package:flutter/services.dart';
class CustomVidPlayer extends StatefulWidget {
CustomVidPlayer({
Key? key,
this.width,
this.height,
required this.videoPath,
this.autoPlay = true,
this.looping = true,
this.showControls = true,
this.allowFullScreen = true,
this.allowPlayBackSpeedChanging = true,
}) : super(key: key);
final double? width;
final double? height;
final String videoPath;
final bool autoPlay;
final bool looping;
final bool showControls;
final bool allowFullScreen;
final bool allowPlayBackSpeedChanging;
@override
_CustomVidPlayerState createState() => _CustomVidPlayerState();
}
class _CustomVidPlayerState extends State<CustomVidPlayer> {
late VideoPlayerController _videoPlayerController;
late ChewieController _chewieController;
late VideoPlayerController _controller;
late Future<void> _initializeVideoPlayerFuture;
bool _isFullScreen = true;
bool _isPlaying = false;
@override
void initState() {
super.initState();
_initializeVideoPlayer();
}
void _initializeVideoPlayer() {
_videoPlayerController = VideoPlayerController.network(widget.videoPath);
_videoPlayerController.setLooping(widget.looping);
_videoPlayerController.initialize().then((_) {
setState(() {});
_chewieController = ChewieController(
videoPlayerController: _videoPlayerController,
autoPlay: widget.autoPlay,
looping: widget.looping,
showControls: widget.showControls,
allowFullScreen: widget.allowFullScreen,
allowPlaybackSpeedChanging: widget.allowPlayBackSpeedChanging,
autoInitialize: true,
fullScreenByDefault: true,
);
});
}
@override
void dispose() {
_videoPlayerController.dispose();
_chewieController.dispose();
super.dispose();
}
void _toggleFullScreen() {
setState(() {
_isFullScreen = !_isFullScreen;
if (_isFullScreen) {
SystemChrome.setPreferredOrientations([
DeviceOrientation.landscapeLeft,
DeviceOrientation.landscapeRight,
]);
_chewieController.enterFullScreen();
} else {
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
_chewieController.exitFullScreen();
}
});
}
void _toggleVideoPlayback() {
setState(() {
if (_videoPlayerController.value.isPlaying) {
_videoPlayerController.pause();
} else {
_videoPlayerController.play();
_toggleFullScreen();
}
});
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
_toggleVideoPlayback();
},
child: Container(
width: widget.width,
height: widget.height,
child: _videoPlayerController.value.isInitialized
? Chewie(
controller: _chewieController,
)
: Center(
child: CircularProgressIndicator(),
),
),
);
}
}