Skip to content

Commit 62d9786

Browse files
committed
Add background tap to pause
1 parent 483e22b commit 62d9786

File tree

4 files changed

+35
-11
lines changed

4 files changed

+35
-11
lines changed

lib/src/chewie_player.dart

Lines changed: 6 additions & 0 deletions
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

Lines changed: 9 additions & 1 deletion
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

Lines changed: 10 additions & 5 deletions
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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -364,12 +364,17 @@ class _MaterialDesktopControlsState extends State<MaterialDesktopControls>
364364
return GestureDetector(
365365
onTap: () {
366366
if (_latestValue.isPlaying) {
367-
if (_displayTapped) {
368-
setState(() {
369-
notifier.hideStuff = true;
370-
});
371-
} else {
367+
if (_chewieController?.pauseOnBackgroundTap ?? false) {
368+
_playPause();
372369
_cancelAndRestartTimer();
370+
} else {
371+
if (_displayTapped) {
372+
setState(() {
373+
notifier.hideStuff = true;
374+
});
375+
} else {
376+
_cancelAndRestartTimer();
377+
}
373378
}
374379
} else {
375380
_playPause();

0 commit comments

Comments
 (0)