Fix audio player: use explicit platform-specific imports and dynamic typing
This commit is contained in:
@@ -6,8 +6,8 @@ import '../theme/app_theme.dart';
|
||||
import '../theme/modern_glass_button.dart';
|
||||
|
||||
// Conditional imports for audio
|
||||
import 'package:just_audio/just_audio.dart'
|
||||
if (dart.library.html) 'web_audio_player.dart';
|
||||
import 'package:just_audio/just_audio.dart' as just_audio;
|
||||
import 'web_audio_player.dart' as web_audio;
|
||||
|
||||
class AudioPlayerBar extends StatefulWidget {
|
||||
final String fileName;
|
||||
@@ -29,7 +29,7 @@ class AudioPlayerBar extends StatefulWidget {
|
||||
|
||||
class _AudioPlayerBarState extends State<AudioPlayerBar>
|
||||
with SingleTickerProviderStateMixin {
|
||||
late AudioPlayer _audioPlayer;
|
||||
dynamic _audioPlayer;
|
||||
late AnimationController _iconController;
|
||||
Duration _duration = Duration.zero;
|
||||
Duration _position = Duration.zero;
|
||||
@@ -43,7 +43,7 @@ class _AudioPlayerBarState extends State<AudioPlayerBar>
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_audioPlayer = AudioPlayer();
|
||||
_audioPlayer = kIsWeb ? web_audio.AudioPlayer() : just_audio.AudioPlayer();
|
||||
_iconController = AnimationController(
|
||||
vsync: this,
|
||||
duration: const Duration(milliseconds: 250),
|
||||
@@ -67,7 +67,7 @@ class _AudioPlayerBarState extends State<AudioPlayerBar>
|
||||
try {
|
||||
if (kIsWeb) {
|
||||
// Web implementation
|
||||
await (_audioPlayer as dynamic).setUrl(
|
||||
await _audioPlayer.setUrl(
|
||||
widget.fileUrl,
|
||||
mimeType: widget.mimeType,
|
||||
);
|
||||
@@ -109,10 +109,7 @@ class _AudioPlayerBarState extends State<AudioPlayerBar>
|
||||
} else {
|
||||
// Mobile implementation (just_audio)
|
||||
await _audioPlayer.setAudioSource(
|
||||
// ignore: undefined_method
|
||||
AudioSource.uri(
|
||||
Uri.parse(widget.fileUrl),
|
||||
), // ignore: undefined_getter
|
||||
just_audio.AudioSource.uri(Uri.parse(widget.fileUrl)),
|
||||
);
|
||||
_audioPlayer.durationStream.firstWhere((d) => d != null).then((
|
||||
d,
|
||||
|
||||
Reference in New Issue
Block a user