build method
Implementation
@override
Widget build(BuildContext context) {
return PopScope(
onPopInvokedWithResult: (didPop, result) async{
if(didPop){ }
await controller.disposePlayer();
// Get.back();
},
child: Localizations(
locale: Localizations.localeOf(context), // Use host app locale
delegates: const [
S.delegate, // Plugin-specific localization
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
child: Builder(
builder: (context) {
return PlayerContainerWidget(
title: controller.title,
showBackButton: true,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
/// Displays the audio thumbnail and track name.
Expanded(
child: Obx(() => AudioThumbNameWidget(
metaData: controller.currentMetaData.value,
),),
),
/// Control buttons for play, pause, skip, and volume adjustments.
const ControlButtonsWidget(),
/// Seek bar for tracking playback progress.
Obx(
() => SeekBar(
duration: controller.duration.value,
position: controller.position.value,
bufferedPosition: controller.bufferedPosition.value,
onChangeEnd: (newPosition) {
controller.player.seek(newPosition);
},
),
),
const SizedBox(height: 8.0),
/// Displays loop and shuffle buttons along with a playlist title.
_buildAudioActionsButtons(context),
/// Displays the list of audio tracks if more than one exists.
Obx(
() => controller.playlist.value == null
? const SizedBox() // Hide if no playlist is available
: controller.playlist.value?.length == 1
? const SizedBox() // Hide if only one track is present
: const AudioListWidget(),
),
],
),
);
},
),
),
);
}