I am getting PlatformException only in web when changing the audio url from one to another.Everything works fine in android and IOS.Issue is only in web.
just_audio: ^0.9.35
this is the version og plugin used.
Error: PlatformException(abort, Loading interrupted, null, null)
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 294:49 throw_
packages/just_audio/just_audio.dart 1247:7 checkInterruption
packages/just_audio/just_audio.dart 1358:11 setPlatform
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 45:50 <fn>
dart-sdk/lib/async/zone.dart 1661:54 runUnary
dart-sdk/lib/async/future_impl.dart 156:18 handleValue
dart-sdk/lib/async/future_impl.dart 840:44 handleValueCallback
dart-sdk/lib/async/future_impl.dart 869:13 _propagateToListeners
dart-sdk/lib/async/future_impl.dart 641:5 [_completeWithValue]
dart-sdk/lib/async/future_impl.dart 715:7 callback
dart-sdk/lib/async/schedule_microtask.dart 40:11 _microtaskLoop
dart-sdk/lib/async/schedule_microtask.dart 49:5 _startMicrotaskLoop
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 181:15 <fn>
Error: PlatformException(error, Platform player 510aeb46-afa2-42f6-a4e3-5728ef8fafad already exists, null, null)
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 294:49 throw_
packages/just_audio_web/just_audio_web.dart 22:7 init
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54 runBody
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 127:5 _async
packages/just_audio_web/just_audio_web.dart 20:35 init
packages/just_audio/just_audio.dart 1341:54 setPlatform
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54 runBody
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 127:5 _async
packages/just_audio/just_audio.dart 1328:44 setPlatform
packages/just_audio/just_audio.dart 1452:17 [_setPlatformActive]
packages/just_audio/just_audio.dart 785:20 load
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54 runBody
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 127:5 _async
packages/just_audio/just_audio.dart 773:25 load
packages/just_audio/just_audio.dart 756:24 setAudioSource
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54 runBody
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 127:5 _async
packages/just_audio/just_audio.dart 738:35 setAudioSource
packages/just_audio/just_audio.dart 669:7 setUrl
Code sample is given below.
setPlayer(String url) async {
try {
_selectedMood = moodBloc.state.selectedMood;
await _stopPlayer();
await _player.setVolume(_getVolumeValue(state.volume));
await _player.setUrl(url);
_subscribeToStream();
} catch (e) {
print('set player error====e');
}
}
Try this:
import "package:flutter/material.dart";
import "package:just_audio/just_audio.dart";
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({super.key});
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final AudioPlayer player = AudioPlayer();
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
children: <Widget>[
ElevatedButton(
onPressed: playSound1,
child: const Text("Play sound 1"),
),
const SizedBox(height: 16),
ElevatedButton(
onPressed: playSound2,
child: const Text("Play sound 2"),
),
],
),
),
);
}
Future<void> playSound1() async {
if (player.playing) {
await player.stop();
}
await player.setUrl(
"http://commondatastorage.googleapis.com/codeskulptor-demos/DDR_assets/Kangaroo_MusiQue_-_The_Neverwritten_Role_Playing_Game.mp3",
);
await player.play();
await player.stop();
return Future<void>.value();
}
Future<void> playSound2() async {
if (player.playing) {
await player.stop();
}
await player.setUrl(
"http://commondatastorage.googleapis.com/codeskulptor-demos/DDR_assets/Sevish_-__nbsp_.mp3",
);
await player.play();
await player.stop();
return Future<void>.value();
}
}