Skip to content

Commit 1a64333

Browse files
authored
Merge pull request #875 from Ortes/pause-on-tap
Add background tap to pause video feature
2 parents 3a3cf05 + 9c375bd commit 1a64333

File tree

4 files changed

+39
-12
lines changed

4 files changed

+39
-12
lines changed

lib/src/chewie_player.dart

+6
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,7 @@ class ChewieController extends ChangeNotifier {
308308
this.progressIndicatorDelay,
309309
this.hideControlsTimer = defaultHideControlsTimer,
310310
this.controlsSafeAreaMinimum = EdgeInsets.zero,
311+
this.pauseOnBackgroundTap = false,
311312
}) : assert(
312313
playbackSpeeds.every((speed) => speed > 0),
313314
'The playbackSpeeds values must all be greater than 0',
@@ -365,6 +366,7 @@ class ChewieController extends ChangeNotifier {
365366
Animation<double>,
366367
ChewieControllerProvider,
367368
)? routePageBuilder,
369+
bool? pauseOnBackgroundTap,
368370
}) {
369371
return ChewieController(
370372
draggableProgressBar: draggableProgressBar ?? this.draggableProgressBar,
@@ -420,6 +422,7 @@ class ChewieController extends ChangeNotifier {
420422
hideControlsTimer: hideControlsTimer ?? this.hideControlsTimer,
421423
progressIndicatorDelay:
422424
progressIndicatorDelay ?? this.progressIndicatorDelay,
425+
pauseOnBackgroundTap: pauseOnBackgroundTap ?? this.pauseOnBackgroundTap,
423426
);
424427
}
425428

@@ -584,6 +587,9 @@ class ChewieController extends ChangeNotifier {
584587
/// Defaults to [EdgeInsets.zero].
585588
final EdgeInsets controlsSafeAreaMinimum;
586589

590+
/// Defines if the player should pause when the background is tapped
591+
final bool pauseOnBackgroundTap;
592+
587593
static ChewieController of(BuildContext context) {
588594
final chewieControllerProvider =
589595
context.dependOnInheritedWidgetOfExactType<ChewieControllerProvider>()!;

lib/src/cupertino/cupertino_controls.dart

+9-1
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,15 @@ class _CupertinoControlsState extends State<CupertinoControls>
354354

355355
return GestureDetector(
356356
onTap: _latestValue.isPlaying
357-
? _cancelAndRestartTimer
357+
? _chewieController?.pauseOnBackgroundTap ?? false
358+
? () {
359+
_playPause();
360+
361+
setState(() {
362+
notifier.hideStuff = true;
363+
});
364+
}
365+
: _cancelAndRestartTimer
358366
: () {
359367
_hideTimer?.cancel();
360368

lib/src/material/material_controls.dart

+10-5
Original file line numberDiff line numberDiff line change
@@ -380,12 +380,17 @@ class _MaterialControlsState extends State<MaterialControls>
380380
return GestureDetector(
381381
onTap: () {
382382
if (_latestValue.isPlaying) {
383-
if (_displayTapped) {
384-
setState(() {
385-
notifier.hideStuff = true;
386-
});
387-
} else {
383+
if (_chewieController?.pauseOnBackgroundTap ?? false) {
384+
_playPause();
388385
_cancelAndRestartTimer();
386+
} else {
387+
if (_displayTapped) {
388+
setState(() {
389+
notifier.hideStuff = true;
390+
});
391+
} else {
392+
_cancelAndRestartTimer();
393+
}
389394
}
390395
} else {
391396
_playPause();

lib/src/material/material_desktop_controls.dart

+14-6
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,10 @@ class _MaterialDesktopControlsState extends State<MaterialDesktopControls>
106106
_cancelAndRestartTimer();
107107
},
108108
child: GestureDetector(
109-
onTap: () => _cancelAndRestartTimer(),
109+
onTap: () {
110+
_playPause();
111+
_cancelAndRestartTimer();
112+
},
110113
child: AbsorbPointer(
111114
absorbing: notifier.hideStuff,
112115
child: Stack(
@@ -365,12 +368,17 @@ class _MaterialDesktopControlsState extends State<MaterialDesktopControls>
365368
return GestureDetector(
366369
onTap: () {
367370
if (_latestValue.isPlaying) {
368-
if (_displayTapped) {
369-
setState(() {
370-
notifier.hideStuff = true;
371-
});
372-
} else {
371+
if (_chewieController?.pauseOnBackgroundTap ?? false) {
372+
_playPause();
373373
_cancelAndRestartTimer();
374+
} else {
375+
if (_displayTapped) {
376+
setState(() {
377+
notifier.hideStuff = true;
378+
});
379+
} else {
380+
_cancelAndRestartTimer();
381+
}
374382
}
375383
} else {
376384
_playPause();

0 commit comments

Comments
 (0)