diff --git a/lib/widgets/content/audio.dart b/lib/widgets/content/audio.dart index 879645f..8e459d9 100644 --- a/lib/widgets/content/audio.dart +++ b/lib/widgets/content/audio.dart @@ -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 createState() => _UniversalAudioState(); @@ -107,14 +113,30 @@ class _UniversalAudioState extends ConsumerState { Expanded( child: Column( mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.stretch, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row( - children: [ - Text( - '${_position.formatShortDuration()} / ${_duration.formatShortDuration()}', - ), - ], + 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(), diff --git a/lib/widgets/content/cloud_file_collection.dart b/lib/widgets/content/cloud_file_collection.dart index 23916eb..8f5bf51 100644 --- a/lib/widgets/content/cloud_file_collection.dart +++ b/lib/widgets/content/cloud_file_collection.dart @@ -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 diff --git a/lib/widgets/content/cloud_files.dart b/lib/widgets/content/cloud_files.dart index bc21332..b51dee1 100644 --- a/lib/widgets/content/cloud_files.dart +++ b/lib/widgets/content/cloud_files.dart @@ -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}'),