handleMethodCall method

Future handleMethodCall(
  1. MethodCall call
)

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'",
      );
  }
}