handleMethodCall method
Implementation
Future<dynamic> handleMethodCall(MethodCall call) async {
final method = call.method;
final playerId = call.arguments['playerId'];
switch (method) {
case 'setUrl':
{
final String? url = call.arguments['url'];
await setUrl(playerId, url);
return 1;
}
case 'play':
{
final String? url = call.arguments['url'];
// TODO(luan) think about isLocal (is it needed or not)
double volume = call.arguments['volume'] ?? 1.0;
final double position = call.arguments['position'] ?? 0;
// web does not care for the `stayAwake` argument
final player = await setUrl(playerId, url);
player.setVolume(volume);
player.start(position);
return 1;
}
case 'pause':
{
getOrCreatePlayer(playerId).pause();
return 1;
}
case 'stop':
{
getOrCreatePlayer(playerId).stop();
return 1;
}
case 'resume':
{
getOrCreatePlayer(playerId).resume();
return 1;
}
case 'setVolume':
{
double volume = call.arguments['volume'] ?? 1.0;
getOrCreatePlayer(playerId).setVolume(volume);
return 1;
}
case 'setReleaseMode':
{
ReleaseMode releaseMode =
parseReleaseMode(call.arguments['releaseMode']);
getOrCreatePlayer(playerId).setReleaseMode(releaseMode);
return 1;
}
case 'release':
{
getOrCreatePlayer(playerId).release();
return 1;
}
case 'seek':
case 'setPlaybackRate':
default:
throw PlatformException(
code: 'Unimplemented',
details:
"The audioplayers plugin for web doesn't implement the method '$method'",
);
}
}