Show audio filename

This commit is contained in:
2025-08-02 15:13:50 +08:00
parent e1286c797f
commit 4d4409de2e
3 changed files with 32 additions and 10 deletions

View File

@@ -12,8 +12,14 @@ import 'package:styled_widget/styled_widget.dart';
class UniversalAudio extends ConsumerStatefulWidget { class UniversalAudio extends ConsumerStatefulWidget {
final String uri; final String uri;
final String filename;
final bool autoplay; final bool autoplay;
const UniversalAudio({super.key, required this.uri, this.autoplay = false}); const UniversalAudio({
super.key,
required this.uri,
required this.filename,
this.autoplay = false,
});
@override @override
ConsumerState<UniversalAudio> createState() => _UniversalAudioState(); ConsumerState<UniversalAudio> createState() => _UniversalAudioState();
@@ -107,14 +113,30 @@ class _UniversalAudioState extends ConsumerState<UniversalAudio> {
Expanded( Expanded(
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( AnimatedSwitcher(
children: [ duration: const Duration(milliseconds: 300),
Text( child:
'${_position.formatShortDuration()} / ${_duration.formatShortDuration()}', (_player!.state.playing || _sliderWorking)
), ? SizedBox(
], width: double.infinity,
key: const ValueKey('playing'),
child: Text(
'${_position.formatShortDuration()} / ${_duration.formatShortDuration()}',
),
)
: SizedBox(
width: double.infinity,
key: const ValueKey('filename'),
child: Text(
widget.filename.isEmpty
? 'Audio'
: widget.filename,
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
),
), ),
Slider( Slider(
value: _sliderPosition.inMilliseconds.toDouble(), value: _sliderPosition.inMilliseconds.toDouble(),

View File

@@ -91,7 +91,7 @@ class CloudFileList extends HookConsumerWidget {
minWidth: minWidth ?? 0, minWidth: minWidth ?? 0,
maxWidth: files.length == 1 ? maxWidth : double.infinity, maxWidth: files.length == 1 ? maxWidth : double.infinity,
), ),
height: isAudio ? 180 : null, height: isAudio ? 120 : null,
child: child:
isAudio isAudio
? widgetItem ? widgetItem

View File

@@ -57,7 +57,7 @@ class CloudFileWidget extends ConsumerWidget {
constraints: BoxConstraints( constraints: BoxConstraints(
maxWidth: math.min(360, MediaQuery.of(context).size.width * 0.8), maxWidth: math.min(360, MediaQuery.of(context).size.width * 0.8),
), ),
child: UniversalAudio(uri: uri), child: UniversalAudio(uri: uri, filename: item.name),
), ),
), ),
_ => Text('Unable render for ${item.mimeType}'), _ => Text('Unable render for ${item.mimeType}'),