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
// 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();