Files
Redesnigned-Finamp/lib/components/AlbumScreen/album_screen_content_flexible_space_bar.dart
T
Zakaria 1563409cb1
Build / Build for Android (push) Has been cancelled
Build / Build for iOS (push) Has been cancelled
first commit
2026-05-18 14:15:38 -04:00

93 lines
3.0 KiB
Dart

import 'dart:io';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:get_it/get_it.dart';
import '../../models/jellyfin_models.dart';
import '../../services/audio_service_helper.dart';
import '../album_image.dart';
import 'item_info.dart';
class AlbumScreenContentFlexibleSpaceBar extends StatelessWidget {
const AlbumScreenContentFlexibleSpaceBar({
Key? key,
required this.album,
required this.items,
}) : super(key: key);
final BaseItemDto album;
final List<BaseItemDto> items;
@override
Widget build(BuildContext context) {
AudioServiceHelper audioServiceHelper =
GetIt.instance<AudioServiceHelper>();
return FlexibleSpaceBar(
background: SafeArea(
child: Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 8),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
children: [
SizedBox(
height: 125,
child: AlbumImage(item: album),
),
const Padding(
padding: EdgeInsets.symmetric(horizontal: 4),
),
Expanded(
flex: 2,
child: ItemInfo(
item: album,
itemSongs: items.length,
),
)
],
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: Row(children: [
Expanded(
child: ElevatedButton.icon(
onPressed: () =>
audioServiceHelper.replaceQueueWithItem(
itemList: items,
),
icon: const Icon(Icons.play_arrow),
label:
Text(AppLocalizations.of(context)!.playButtonLabel),
),
),
const Padding(padding: EdgeInsets.symmetric(horizontal: 8)),
Expanded(
child: ElevatedButton.icon(
onPressed: () =>
audioServiceHelper.replaceQueueWithItem(
itemList: items,
shuffle: true,
initialIndex: Random().nextInt(items.length),
),
icon: const Icon(Icons.shuffle),
label: Text(
AppLocalizations.of(context)!.shuffleButtonLabel),
),
),
]),
)
],
),
),
),
),
);
}
}