idle
This commit is contained in:
@@ -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<AudioPlayerBar>
|
||||
Future<void> _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<AudioPlayerBar>
|
||||
});
|
||||
});
|
||||
|
||||
// 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<AudioPlayerBar>
|
||||
_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<AudioPlayerBar>
|
||||
_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<AudioPlayerBar>
|
||||
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<AudioPlayerBar>
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 10),
|
||||
// Time
|
||||
|
||||
Text(
|
||||
'${_formatDuration(_position)} / ${_formatDuration(_duration)}',
|
||||
style: const TextStyle(
|
||||
@@ -287,7 +281,7 @@ class _AudioPlayerBarState extends State<AudioPlayerBar>
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
),
|
||||
// Close button (simple small x)
|
||||
|
||||
if (widget.onClose != null)
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(left: 8.0),
|
||||
|
||||
Reference in New Issue
Block a user