diff --git a/lib/entities/camera/widgets/camera_stream_view.dart b/lib/entities/camera/widgets/camera_stream_view.dart index b626fda..c4cf062 100644 --- a/lib/entities/camera/widgets/camera_stream_view.dart +++ b/lib/entities/camera/widgets/camera_stream_view.dart @@ -3,8 +3,9 @@ part of '../../../main.dart'; class CameraStreamView extends StatefulWidget { final bool withControls; + final CameraEntity entity; - CameraStreamView({Key key, this.withControls: true}) : super(key: key); + CameraStreamView({Key key, this.withControls: true, this.entity}) : super(key: key); @override _CameraStreamViewState createState() => _CameraStreamViewState(); @@ -34,7 +35,7 @@ class _CameraStreamViewState extends State { } Logger.d("[Camera Player] Loading resources"); _loading = Completer(); - _entity = EntityModel + _entity = widget.entity ?? EntityModel .of(context) .entityWrapper .entity; @@ -141,8 +142,7 @@ class _CameraStreamViewState extends State { } Widget _buildControls() { - if (widget.withControls) { - Widget playControl; + Widget playControl; if (_entity.supportStream) { playControl = Center( child: IconButton( @@ -187,14 +187,25 @@ class _CameraStreamViewState extends State { iconSize: 40, color: Colors.amberAccent, onPressed: _isLoaded ? () { - setState(() {}); + _videoPlayerController?.pause(); + eventBus.fire(ShowEntityPageEvent()); + Navigator.of(context).push( + MaterialPageRoute( + builder: (conext) => FullScreenPage( + child: CameraStreamView( + withControls: false, + entity: _entity, + ), + ), + fullscreenDialog: true + ) + ).then((_) { + eventBus.fire(ShowEntityPageEvent(entity: _entity)); + }); } : null, ) ], ); - } else { - return Container(); - } } @override @@ -202,15 +213,20 @@ class _CameraStreamViewState extends State { if (!_isLoaded && (_loading == null || _loading.isCompleted)) { _loadResources().then((_) => setState((){ _isLoaded = true; })); } - return Card( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - _buildScreen(), - _buildControls() - ], - ), - ); + if (widget.withControls) { + return Card( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + _buildScreen(), + _buildControls() + ], + ), + ); + } else { + return _buildScreen(); + } + } @override diff --git a/lib/main.dart b/lib/main.dart index 9819bbf..e51edc5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -140,6 +140,7 @@ part 'entities/entity_page_layout.widget.dart'; part 'entities/media_player/widgets/media_player_seek_bar.widget.dart'; part 'entities/media_player/widgets/media_player_progress_bar.widget.dart'; part 'pages/whats_new.page.dart'; +part 'pages/fullscreen.page.dart'; EventBus eventBus = new EventBus(); final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); diff --git a/lib/pages/fullscreen.page.dart b/lib/pages/fullscreen.page.dart new file mode 100644 index 0000000..e3de918 --- /dev/null +++ b/lib/pages/fullscreen.page.dart @@ -0,0 +1,18 @@ +part of '../main.dart'; + +class FullScreenPage extends StatelessWidget { + + final Widget child; + + const FullScreenPage({Key key, this.child}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + color: Colors.black, + child: Center( + child: this.child, + ), + ); + } +} \ No newline at end of file