Files
SpotiFLAC-Mobile/lib/widgets/player_metadata_title.dart
T

46 lines
1.4 KiB
Dart

import 'package:audio_service/audio_service.dart';
import 'package:flutter/material.dart';
import 'package:spotiflac_android/controllers/player_metadata_controller.dart';
import 'package:spotiflac_android/utils/string_utils.dart';
import 'package:spotiflac_android/widgets/audio_quality_badges.dart';
/// File metadata can arrive after playback starts without rebuilding the layout.
class PlayerMetadataTitle extends StatelessWidget {
const PlayerMetadataTitle({
super.key,
required this.mediaItem,
required this.metadata,
this.style,
this.textAlign,
this.maxLines,
this.overflow = TextOverflow.clip,
});
final MediaItem mediaItem;
final PlayerMetadataController metadata;
final TextStyle? style;
final TextAlign? textAlign;
final int? maxLines;
final TextOverflow overflow;
@override
Widget build(BuildContext context) => ListenableBuilder(
listenable: metadata,
builder: (context, _) {
final source = mediaItem.extras?['source']?.toString();
final loaded = source == metadata.source ? metadata.metadata : null;
return ExplicitTrackTitle(
title: mediaItem.title,
explicit:
parseExplicitFlag(loaded?['explicit']) ??
parseExplicitFlag(mediaItem.extras?['explicit']) ??
false,
style: style,
textAlign: textAlign,
maxLines: maxLines,
overflow: overflow,
);
},
);
}