Controller Methods

Complete reference for IAppPlayerController and IAppPlayerPlaylistController methods.

IAppPlayerController

The main controller for video playback. This controller provides all methods to control video playback, fullscreen mode, subtitles, and more.

Playback Control

Method Description Parameters Returns
play() Start or resume playback - Future<void>
pause() Pause playback - Future<void>
seekTo(Duration moment) Seek to specific position moment: Target position Future<void>
setVolume(double volume) Set volume level volume: 0.0 to 1.0 Future<void>
setSpeed(double speed) Set playback speed speed: >0 and ≤2.0 Future<void>

Fullscreen Control

Method Description Parameters Returns
enterFullScreen() Enter fullscreen mode - void
exitFullScreen() Exit fullscreen mode - void
toggleFullScreen() Toggle fullscreen state - void

Subtitles and Tracks

Method Description Parameters Returns
setupSubtitleSource(IAppPlayerSubtitlesSource source) Switch subtitle source source: Subtitle source Future<void>
setTrack(IAppPlayerAsmsTrack track) Set video track (HLS multi-bitrate) track: Video track void
setAudioTrack(IAppPlayerAsmsAudioTrack track) Set audio track track: Audio track void
Note: When track's height, width, and bitrate are all 0, it displays as "Auto" in the UI.

Advanced Features

Method Description Parameters Returns
setupDataSource(IAppPlayerDataSource dataSource) Set data source dataSource: Data source object Future<void>
setMixWithOthers(bool mixWithOthers) Set whether to mix with other audio mixWithOthers: true/false void
enablePictureInPicture() Enable picture-in-picture mode - Future<void>
disablePictureInPicture() Disable picture-in-picture mode - Future<void>
setControlsEnabled(bool enabled) Enable/disable controls enabled: true/false void
setControlsAlwaysVisible(bool visible) Set controls always visible visible: true/false void
retryDataSource() Retry current data source - Future<void>
clearCache() Clear video cache - void
preCache(IAppPlayerDataSource dataSource) Pre-cache video dataSource: Data source to cache Future<void>
stopPreCache(IAppPlayerDataSource dataSource) Stop pre-caching dataSource: Data source Future<void>
setBufferingDebounceTime(int time) Set buffering debounce time time: Time in milliseconds void
dispose({bool forceDispose = false}) Release resources forceDispose: Force disposal void

Property Getters

Property/Method Return Type Description
isPlaying() bool Is video playing
isBuffering() bool Is video buffering
isVideoInitialized() bool Is video initialized
isFullScreen bool Is in fullscreen mode
videoPlayerController VideoPlayerController? Get underlying video controller
iappPlayerDataSource IAppPlayerDataSource? Get current data source
subtitlesLines List<IAppPlayerSubtitle> Get subtitle list
renderedSubtitle IAppPlayerSubtitle? Get currently displayed subtitle
iappPlayerAsmsTrack IAppPlayerAsmsTrack? Get current video track
iappPlayerAsmsTracks List<IAppPlayerAsmsTrack> Get available video tracks
iappPlayerAsmsAudioTrack IAppPlayerAsmsAudioTrack? Get current audio track
iappPlayerAsmsAudioTracks List<IAppPlayerAsmsAudioTrack> Get available audio tracks

IAppPlayerPlaylistController

Controller for playlist functionality. This controller manages playlist navigation, shuffle mode, and playlist data sources.

Playlist Methods

Method Description Parameters Returns
playNext() Play next video in playlist - void
playPrevious() Play previous video in playlist - void
setupDataSource(int index) Play video at specific index index: Video index void
toggleShuffleMode() Toggle shuffle mode on/off - void
setupDataSourceList(List<IAppPlayerDataSource> dataSources) Set new playlist dataSources: New data source list void
dispose() Release resources (force dispose internal controller) - void

Playlist Properties

Property Type Description
currentDataSourceIndex int Current playback index
dataSourceList List<IAppPlayerDataSource> Get data source list (read-only)
hasNext bool Has next video
hasPrevious bool Has previous video
shuffleMode bool Current shuffle mode state
iappPlayerController IAppPlayerController? Get internal player controller

Usage Examples

Complete Controller Usage

dart
// Basic playback control
result.activeController?.play();
result.activeController?.pause();
result.activeController?.seekTo(Duration(minutes: 5, seconds: 30));
result.activeController?.setVolume(0.8);
result.activeController?.setSpeed(1.5);

// Fullscreen control
result.activeController?.enterFullScreen();
result.activeController?.exitFullScreen();
result.activeController?.toggleFullScreen();

// Subtitle control
final subtitleSource = IAppPlayerSubtitlesSource(
  type: IAppPlayerSubtitlesSourceType.network,
  urls: ['https://example.com/new_subtitle.srt'],
  name: 'English Subtitles',
);
result.activeController?.setupSubtitleSource(subtitleSource);

// Get playback status
final isPlaying = result.activeController?.isPlaying() ?? false;
final isBuffering = result.activeController?.isBuffering() ?? false;
final isInitialized = result.activeController?.isVideoInitialized() ?? false;

// Get current lyrics (for music player)
final subtitle = result.activeController?.renderedSubtitle;
if (subtitle != null && subtitle.texts != null && subtitle.texts!.isNotEmpty) {
  final currentLyric = subtitle.texts!.join(' ');
  print('Current lyrics: $currentLyric');
}

// Playlist control
if (result.isPlaylist) {
  result.playlistController?.playNext();
  result.playlistController?.playPrevious();
  result.playlistController?.setupDataSource(3); // Play the 4th video
  result.playlistController?.toggleShuffleMode();
  
  // Get playlist information
  final currentIndex = result.playlistController?.currentDataSourceIndex ?? 0;
  final totalVideos = result.playlistController?.dataSourceList.length ?? 0;
  print('Now playing: ${currentIndex + 1}/$totalVideos');
}

// Release resources
result.activeController?.dispose();
result.playlistController?.dispose();