dispose method
Implementation
Future<void> dispose() async {
List<Future> futures = [];
await _invokeMethod('dispose');
if (!_playerStateController.isClosed)
futures.add(_playerStateController.close());
if (!_positionController.isClosed) futures.add(_positionController.close());
if (!_durationController.isClosed) futures.add(_durationController.close());
if (!_completionController.isClosed)
futures.add(_completionController.close());
if (!_errorController.isClosed) futures.add(_errorController.close());
if (!_currentPlayingIndexController.isClosed)
futures.add(_currentPlayingIndexController.close());
if (!_audioSessionIdController.isClosed)
futures.add(_audioSessionIdController.close());
if (!_notificationActionController.isClosed)
futures.add(_notificationActionController.close());
await Future.wait(futures);
}