diff --git a/b0esche_cloud/lib/widgets/audio_player_bar.dart b/b0esche_cloud/lib/widgets/audio_player_bar.dart index 5c0b8ec..278f57b 100644 --- a/b0esche_cloud/lib/widgets/audio_player_bar.dart +++ b/b0esche_cloud/lib/widgets/audio_player_bar.dart @@ -5,7 +5,6 @@ import 'dart:async'; import '../theme/app_theme.dart'; import '../theme/modern_glass_button.dart'; -// Conditional imports for audio import 'package:just_audio/just_audio.dart' as just_audio; import 'web_audio_player.dart' as web_audio; @@ -66,7 +65,6 @@ class _AudioPlayerBarState extends State Future _initAudio() async { try { if (kIsWeb) { - // Web implementation await _audioPlayer.setUrl(widget.fileUrl, mimeType: widget.mimeType); _durationSubscription = _audioPlayer.durationStream.listen((d) { if (d != null) { @@ -101,10 +99,8 @@ class _AudioPlayerBarState extends State }); }); - // Auto-play for web await _audioPlayer.play(); } else { - // Mobile implementation (just_audio) await _audioPlayer.setAudioSource( just_audio.AudioSource.uri(Uri.parse(widget.fileUrl)), ); @@ -116,10 +112,9 @@ class _AudioPlayerBarState extends State _isLoading = false; }); try { - await _audioPlayer.play(); // Start playback automatically - // For mobile, check playing state after a short delay + await _audioPlayer.play(); + Future.delayed(const Duration(milliseconds: 100), () { - // Use dynamic access to avoid compilation issues with conditional imports final player = _audioPlayer as dynamic; if (player.playerState?.playing == true) { if (mounted) _iconController.forward(); @@ -141,7 +136,7 @@ class _AudioPlayerBarState extends State _position = pos; }); }); - // Use dynamic access to avoid compilation issues with conditional imports + final player = _audioPlayer as dynamic; player.playerStateStream.listen((state) { setState(() { @@ -199,11 +194,10 @@ class _AudioPlayerBarState extends State mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.center, children: [ - // Play/Pause button (AnimatedIcon) ModernGlassButton( onPressed: _isLoading ? () {} : _handlePlayPause, child: Transform.translate( - offset: const Offset(0, -4), // Move icon up by 4px + offset: const Offset(0, -4), child: AnimatedIcon( icon: AnimatedIcons.play_pause, progress: _iconController, @@ -278,7 +272,7 @@ class _AudioPlayerBarState extends State ), ), const SizedBox(width: 10), - // Time + Text( '${_formatDuration(_position)} / ${_formatDuration(_duration)}', style: const TextStyle( @@ -287,7 +281,7 @@ class _AudioPlayerBarState extends State fontWeight: FontWeight.w500, ), ), - // Close button (simple small x) + if (widget.onClose != null) Padding( padding: const EdgeInsets.only(left: 8.0),