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