part of './controller_widget_builder.dart'; enum FullScreenType { rotateScreen, rotateBox, } showFullScreenIJKPlayer( BuildContext context, IjkMediaController controller, { IJKControllerWidgetBuilder fullscreenControllerWidgetBuilder, FullScreenType fullScreenType = FullScreenType.rotateBox, }) async { if (fullScreenType == FullScreenType.rotateBox) { _showFullScreenWithRotateBox( context, controller, fullscreenControllerWidgetBuilder: fullscreenControllerWidgetBuilder, ); return; } _showFullScreenWithRotateScreen( context, controller, fullscreenControllerWidgetBuilder, ); } _showFullScreenWithRotateScreen( BuildContext context, IjkMediaController controller, IJKControllerWidgetBuilder fullscreenControllerWidgetBuilder) async { Navigator.push( context, FullScreenRoute( builder: (c) { return IjkPlayer( mediaController: controller, controllerWidgetBuilder: (ctl) => fullscreenControllerWidgetBuilder(ctl), ); }, ), ).then((_) { IjkManager.unlockOrientation(); IjkManager.setCurrentOrientation(DeviceOrientation.portraitUp); }); var info = await controller.getVideoInfo(); Axis axis; if (info.width == 0 || info.height == 0) { axis = Axis.horizontal; } else if (info.width > info.height) { if (info.degree == 90 || info.degree == 270) { axis = Axis.vertical; } else { axis = Axis.horizontal; } } else { if (info.degree == 90 || info.degree == 270) { axis = Axis.horizontal; } else { axis = Axis.vertical; } } if (axis == Axis.horizontal) { IjkManager.setLandScape(); } else { IjkManager.setPortrait(); } } _showFullScreenWithRotateBox( BuildContext context, IjkMediaController controller, { IJKControllerWidgetBuilder fullscreenControllerWidgetBuilder, }) async { var info = await controller.getVideoInfo(); Axis axis; if (info.width == 0 || info.height == 0) { axis = Axis.horizontal; } else if (info.width > info.height) { if (info.degree == 90 || info.degree == 270) { axis = Axis.vertical; } else { axis = Axis.horizontal; } } else { if (info.degree == 90 || info.degree == 270) { axis = Axis.horizontal; } else { axis = Axis.vertical; } } Navigator.push( context, FullScreenRoute( builder: (ctx) { var mediaQueryData = MediaQuery.of(ctx); int quarterTurns; if (axis == Axis.horizontal) { if (mediaQueryData.orientation == Orientation.landscape) { quarterTurns = 0; } else { quarterTurns = 1; } } else { quarterTurns = 0; } /*else { if (mediaQueryData.orientation == Orientation.portrait) { quarterTurns = 0; } else { quarterTurns = -1; } }*/ return SafeArea( child: RotatedBox( quarterTurns: quarterTurns, child: IjkPlayer( mediaController: controller, controllerWidgetBuilder: (ctl) => fullscreenControllerWidgetBuilder(ctl), ), ), ); }, ), ); } Widget _buildFullScreenMediaController( IjkMediaController controller, bool fullScreen) { return MyDefaultIJKControllerWidget( controller: controller, currentFullScreenState: true, ); } Widget buildFullscreenMediaController(IjkMediaController controller) { return _buildFullScreenMediaController(controller, true); }