2020-04-06 22:33:26 +02:00
|
|
|
import 'package:audio_service/audio_service.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
|
|
|
class AudioServiceWidget extends StatefulWidget {
|
|
|
|
const AudioServiceWidget({@required this.child});
|
|
|
|
|
|
|
|
final Widget child;
|
|
|
|
|
|
|
|
@override
|
|
|
|
_AudioServiceWidgetState createState() => _AudioServiceWidgetState();
|
|
|
|
}
|
|
|
|
|
|
|
|
class _AudioServiceWidgetState extends State<AudioServiceWidget>
|
|
|
|
with WidgetsBindingObserver {
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
super.initState();
|
|
|
|
WidgetsBinding.instance.addObserver(this);
|
|
|
|
AudioService.connect();
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
void dispose() {
|
2020-04-07 21:25:01 +02:00
|
|
|
AudioService.stop();
|
2020-04-06 22:33:26 +02:00
|
|
|
AudioService.disconnect();
|
|
|
|
WidgetsBinding.instance.removeObserver(this);
|
|
|
|
super.dispose();
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
void didChangeAppLifecycleState(AppLifecycleState state) {
|
|
|
|
switch (state) {
|
|
|
|
case AppLifecycleState.resumed:
|
|
|
|
AudioService.connect();
|
|
|
|
break;
|
|
|
|
case AppLifecycleState.paused:
|
|
|
|
AudioService.disconnect();
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return WillPopScope(
|
|
|
|
onWillPop: () async {
|
|
|
|
AudioService.disconnect();
|
|
|
|
return true;
|
|
|
|
},
|
|
|
|
child: widget.child,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|