| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- import 'package:flutter/material.dart';
- import 'package:flutter_ijkplayer/flutter_ijkplayer.dart';
- class FullScreen extends StatefulWidget {
- @override
- _FullScreenState createState() => _FullScreenState();
- }
- class _FullScreenState extends State<FullScreen> {
- var controller = IjkMediaController();
- Orientation get orientation => MediaQuery.of(context).orientation;
- DataSource source = DataSource.network(
- "https://www.sample-videos.com/video123/mp4/360/big_buck_bunny_360p_30mb.mp4",
- );
- @override
- void initState() {
- super.initState();
- controller.setDataSource(source, autoPlay: true);
- }
- @override
- void dispose() {
- controller?.dispose();
- super.dispose();
- }
- @override
- Widget build(BuildContext context) {
- if (orientation == Orientation.landscape) {
- return _buildFullScreenPlayer();
- }
- return Scaffold(
- appBar: AppBar(
- title: Text("切换横竖屏可以看到界面变化"),
- ),
- body: ListView(
- children: <Widget>[
- _buildPlayerItem(),
- ],
- ),
- );
- }
- _buildPlayerItem() {
- return Container(
- height: 200,
- child: IjkPlayer(
- mediaController: controller,
- ),
- );
- }
- _buildFullScreenPlayer() {
- var data = MediaQuery.of(context);
- return Material(
- child: Container(
- width: data.size.width,
- height: data.size.height,
- child: IjkPlayer(
- mediaController: controller,
- ),
- ),
- );
- }
- }
- class FullScreen2 extends StatefulWidget {
- @override
- _FullScreen2State createState() => _FullScreen2State();
- }
- class _FullScreen2State extends State<FullScreen2> {
- var controller = IjkMediaController();
- Orientation get orientation => MediaQuery.of(context).orientation;
- DataSource source = DataSource.network(
- "https://www.sample-videos.com/video123/mp4/360/big_buck_bunny_360p_30mb.mp4",
- );
- @override
- void initState() {
- super.initState();
- portraitUp();
- }
- @override
- void dispose() {
- controller.dispose();
- unlockOrientation();
- super.dispose();
- }
- @override
- Widget build(BuildContext context) {
- if (orientation == Orientation.landscape) {
- return buildLandscape();
- }
- return buildNormal();
- }
- Widget buildLandscape() {
- // SystemChrome.setEnabledSystemUIOverlays([]);
- // OrientationPlugin.setEnabledSystemUIOverlays([]);
- return WillPopScope(
- child: Scaffold(
- body: Stack(
- children: <Widget>[
- IjkPlayer(
- mediaController: controller,
- ),
- Container(
- height: 44.0,
- width: 44.0,
- child: IconButton(
- icon: Icon(
- Icons.fullscreen_exit,
- color: Colors.white,
- ),
- onPressed: portraitUp,
- ),
- ),
- ],
- ),
- ),
- onWillPop: () async {
- if (orientation == Orientation.landscape) {
- portraitUp();
- return false;
- }
- return true;
- },
- );
- }
- Widget buildNormal() {
- // SystemChrome.setEnabledSystemUIOverlays([
- // SystemUiOverlay.top,
- // SystemUiOverlay.bottom,
- // ]);
- // OrientationPlugin.setEnabledSystemUIOverlays([
- // SystemUiOverlay.top,
- // SystemUiOverlay.bottom,
- // ]);
- return Scaffold(
- appBar: AppBar(
- title: Text("手动切换全屏(强制)"),
- ),
- body: ListView(
- children: <Widget>[
- AspectRatio(
- aspectRatio: 1,
- child: IjkPlayer(
- mediaController: controller,
- controllerWidgetBuilder: (ctl) {
- return DefaultIJKControllerWidget(
- controller: ctl,
- verticalGesture: false,
- );
- },
- ),
- ),
- RaisedButton(
- onPressed: () async {
- await controller.setDataSource(source);
- await controller.play();
- },
- child: Text("播放"),
- ),
- RaisedButton(
- onPressed: setLandScapeLeft,
- child: Text("全屏"),
- ),
- ],
- ),
- );
- }
- setLandScapeLeft() async {
- await IjkManager.setLandScape();
- }
- portraitUp() async {
- await IjkManager.setPortrait();
- }
- unlockOrientation() async {
- await IjkManager.unlockOrientation();
- }
- }
|