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 {
final String uri;
final String filename;
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
ConsumerState<UniversalAudio> createState() => _UniversalAudioState();
@@ -107,14 +113,30 @@ class _UniversalAudioState extends ConsumerState<UniversalAudio> {
Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Text(
AnimatedSwitcher(
duration: const Duration(milliseconds: 300),
child:
(_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(
value: _sliderPosition.inMilliseconds.toDouble(),

View File

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

View File

@@ -57,7 +57,7 @@ class CloudFileWidget extends ConsumerWidget {
constraints: BoxConstraints(
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}'),