setMethodCallHandler method

Future<void> setMethodCallHandler()

Implementation

Future<void> setMethodCallHandler() async {
  _methodChannel.setMethodCallHandler((call) async {
    switch (call.method) {
      case Constants.onCurrentDuration:
        var duration = call.arguments[Constants.current];
        var key = call.arguments[Constants.playerKey];
        if (duration.runtimeType == int) {
          var identifier = PlayerIdentifier<int>(key, duration);
          PlatformStreams.instance.addCurrentDurationEvent(identifier);
        }
        break;
      case Constants.onDidFinishPlayingAudio:
        var key = call.arguments[Constants.playerKey];
        var playerState =
            getPlayerState(call.arguments[Constants.finishType]);
        var stateIdentifier = PlayerIdentifier<PlayerState>(key, playerState);
        var completionIdentifier = PlayerIdentifier<void>(key, null);
        PlatformStreams.instance.addCompletionEvent(completionIdentifier);
        PlatformStreams.instance.addPlayerStateEvent(stateIdentifier);
        if (PlatformStreams.instance.playerControllerFactory[key] != null) {
          PlatformStreams.instance.playerControllerFactory[key]
              ?._playerState = playerState;
        }
        break;
      case Constants.onCurrentExtractedWaveformData:
        var key = call.arguments[Constants.playerKey];
        var progress = call.arguments[Constants.progress];
        var waveformData =
            List<double>.from(call.arguments[Constants.waveformData]);
        PlatformStreams.instance.addExtractedWaveformDataEvent(
          PlayerIdentifier<List<double>>(key, waveformData),
        );
        PlatformStreams.instance.addExtractionProgress(
          PlayerIdentifier<double>(key, progress),
        );
        break;
    }
  });
}