✨ Show audio filename
This commit is contained in:
@@ -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:
|
||||||
|
(_player!.state.playing || _sliderWorking)
|
||||||
|
? SizedBox(
|
||||||
|
width: double.infinity,
|
||||||
|
key: const ValueKey('playing'),
|
||||||
|
child: Text(
|
||||||
'${_position.formatShortDuration()} / ${_duration.formatShortDuration()}',
|
'${_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(),
|
||||||
|
@@ -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
|
||||||
|
@@ -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}'),
|
||||||
|
Reference in New Issue
Block a user