import 'package:flutter/material.dart'; import 'package:finamp/l10n/app_localizations.dart'; import 'package:get_it/get_it.dart'; import '../../models/jellyfin_models.dart'; import '../../services/jellyfin_api_helper.dart'; import '../../services/generate_subtitle.dart'; import '../album_image.dart'; /// ListTile content for AlbumItem. You probably shouldn't use this widget /// directly, use AlbumItem instead. class AlbumItemListTile extends StatelessWidget { const AlbumItemListTile({ Key? key, required this.item, this.parentType, this.onTap, }) : super(key: key); final BaseItemDto item; final String? parentType; final void Function()? onTap; @override Widget build(BuildContext context) { final jellyfinApiHelper = GetIt.instance(); final subtitle = generateSubtitle(item, parentType, context); final colorScheme = Theme.of(context).colorScheme; return Padding( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 5), child: Material( color: colorScheme.surfaceVariant.withOpacity(0.42), borderRadius: BorderRadius.circular(22), clipBehavior: Clip.antiAlias, child: DecoratedBox( decoration: BoxDecoration( borderRadius: BorderRadius.circular(22), border: Border.all( color: colorScheme.outlineVariant.withOpacity(0.24), ), ), child: ListTile( // This widget is used on the add to playlist screen, so we allow a // custom onTap to be passed as an argument. onTap: onTap, contentPadding: const EdgeInsets.symmetric( horizontal: 12, vertical: 8, ), leading: SizedBox.square( dimension: 62, child: ClipRRect( borderRadius: BorderRadius.circular(18), child: AlbumImage(item: item), ), ), title: Text( item.name ?? AppLocalizations.of(context)!.unknownName, overflow: TextOverflow.ellipsis, style: Theme.of(context).textTheme.titleMedium?.copyWith( fontWeight: FontWeight.w800, color: colorScheme.onSurface, ), ), subtitle: subtitle == null ? null : Text( subtitle, maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle(color: colorScheme.onSurfaceVariant), ), trailing: jellyfinApiHelper.selectedMixAlbumIds.contains(item.id) ? Icon(Icons.explore_rounded, color: colorScheme.primary) : Icon( Icons.chevron_right_rounded, color: colorScheme.onSurfaceVariant, ), ), ), ), ); } }