Skip to content

Commit 1937a7c

Browse files
committed
Add background tap to pause
1 parent c7665a3 commit 1937a7c

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
@@ -307,6 +307,7 @@ class ChewieController extends ChangeNotifier {
307307
this.progressIndicatorDelay,
308308
this.hideControlsTimer = defaultHideControlsTimer,
309309
this.controlsSafeAreaMinimum = EdgeInsets.zero,
310+
this.pauseOnBackgroundTap = false,
310311
}) : assert(
311312
playbackSpeeds.every((speed) => speed > 0),
312313
'The playbackSpeeds values must all be greater than 0',
@@ -363,6 +364,7 @@ class ChewieController extends ChangeNotifier {
363364
Animation<double>,
364365
ChewieControllerProvider,
365366
)? routePageBuilder,
367+
bool? pauseOnBackgroundTap,
366368
}) {
367369
return ChewieController(
368370
draggableProgressBar: draggableProgressBar ?? this.draggableProgressBar,
@@ -417,6 +419,7 @@ class ChewieController extends ChangeNotifier {
417419
hideControlsTimer: hideControlsTimer ?? this.hideControlsTimer,
418420
progressIndicatorDelay:
419421
progressIndicatorDelay ?? this.progressIndicatorDelay,
422+
pauseOnBackgroundTap: pauseOnBackgroundTap ?? this.pauseOnBackgroundTap,
420423
);
421424
}
422425

@@ -575,6 +578,9 @@ class ChewieController extends ChangeNotifier {
575578
/// Defaults to [EdgeInsets.zero].
576579
final EdgeInsets controlsSafeAreaMinimum;
577580

581+
/// Defines if the player should pause when the background is tapped
582+
final bool pauseOnBackgroundTap;
583+
578584
static ChewieController of(BuildContext context) {
579585
final chewieControllerProvider =
580586
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
@@ -374,12 +374,17 @@ class _MaterialControlsState extends State<MaterialControls>
374374
return GestureDetector(
375375
onTap: () {
376376
if (_latestValue.isPlaying) {
377-
if (_displayTapped) {
378-
setState(() {
379-
notifier.hideStuff = true;
380-
});
381-
} else {
377+
if (_chewieController?.pauseOnBackgroundTap ?? false) {
378+
_playPause();
382379
_cancelAndRestartTimer();
380+
} else {
381+
if (_displayTapped) {
382+
setState(() {
383+
notifier.hideStuff = true;
384+
});
385+
} else {
386+
_cancelAndRestartTimer();
387+
}
383388
}
384389
} else {
385390
_playPause();

lib/src/material/material_desktop_controls.dart

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -336,12 +336,17 @@ class _MaterialDesktopControlsState extends State<MaterialDesktopControls>
336336
return GestureDetector(
337337
onTap: () {
338338
if (_latestValue.isPlaying) {
339-
if (_displayTapped) {
340-
setState(() {
341-
notifier.hideStuff = true;
342-
});
343-
} else {
339+
if (_chewieController?.pauseOnBackgroundTap ?? false) {
340+
_playPause();
344341
_cancelAndRestartTimer();
342+
} else {
343+
if (_displayTapped) {
344+
setState(() {
345+
notifier.hideStuff = true;
346+
});
347+
} else {
348+
_cancelAndRestartTimer();
349+
}
345350
}
346351
} else {
347352
_playPause();

0 commit comments

Comments
 (0)