flutter_feed_player library
Vertical feed player and series episode player for Flutter.
Layering:
- Core view — FeedPlayerView / EpisodePlayerView (surface + gestures)
- Components — FeedPlayerChrome / EpisodePlayerChrome (or your own)
- Convenience — FeedPlayer / EpisodePlayer = view + default chrome
Classes
- CachedPlayer
- Cached parked player entry for episode binge.
- EpisodeAsset
- A single CDN / file asset for an episode clip.
- EpisodeBoostBadge
- "2.0x" badge while long-press boosting.
- EpisodeBottomChrome
- Bottom series / episode meta + seek bar.
- EpisodeCenterControl
- Large center play / pause control.
- EpisodeCenterPlayIcon
- Large center play glyph (non-interactive). Prefer EpisodeCenterControl.
- EpisodeCircleIcon
- Circular icon button used by EpisodeSideActions.
- EpisodeItem
- One episode within a series (or a feed clip that points at a series).
- EpisodePlaybackStrategy
- Series episode binge playback strategy.
- EpisodePlayer
- Batteries-included episode player: EpisodePlayerView + EpisodePlayerChrome.
- EpisodePlayerChrome
- Default episode chrome: top bar, side actions, bottom meta/seek, boost badge.
- EpisodePlayerController
- Controller for the vertical series episode binge player.
- EpisodePlayerScope
- Access EpisodePlayerViewState / controller from descendant overlays.
- EpisodePlayerSlot
- Per-page context for custom overlays on EpisodePlayerView.
- EpisodePlayerView
- Headless vertical episode shell: PageView + PlayerSurface + gestures.
- EpisodePlayerViewState
- EpisodeSideActions
- Right-side episode list / share.
- EpisodeTopBar
- Back / title / quality / speed row.
- FeedActionButton
- Circular icon + label used by FeedSideActions.
- FeedBottomChrome
- Bottom title / tags / CTA / seek bar.
- FeedCenterPlayIcon
- Large center play glyph (non-interactive).
- FeedItem
- One card in a vertical recommendation / For You feed.
- FeedPlaybackStrategy
- Feed (For You) playback strategy — TikTok-style short clip switching.
- FeedPlayer
- Batteries-included feed player: FeedPlayerView + FeedPlayerChrome.
- FeedPlayerChrome
- Default feed chrome stack: center play + side actions + bottom meta/seek.
- FeedPlayerController
- Controller for the vertical recommendation / For You feed player.
- FeedPlayerScope
- Access FeedPlayerViewState / controller from descendant overlays.
- FeedPlayerSlot
- Per-page context for custom overlays on FeedPlayerView.
- FeedPlayerView
- Headless vertical feed shell: PageView + PlayerSurface + gestures.
- FeedPlayerViewState
- FeedSideActions
- Right-side like / share / more column.
- HlsQualityUrl
- HLS playlist URL helpers.
- LandscapeFullscreenButton
- Pill button used under a landscape clip and inside the fullscreen stage.
- LandscapeFullscreenStage
- Landscape playback that fills the screen.
- LandscapeSurfaceLayers
- Split stack children so the fullscreen chip can sit above gestures.
- LandscapeVideoLayout
- Geometry for 16:9 and other landscape clips inside a portrait feed.
- LockForwardPagePhysics
- Blocks scrolling to the next page while the current clip is still cold.
- MediaFormat
- Detects common stream / file formats from URL extension or asset type.
- PlaybackAudio
-
Process-wide exclusive audio for
VideoPlayerControllers. - PlaybackMemory
- Device RAM / heap budget for player parking and caches.
- PlayerCache
- Process-level episode player cache (survives leaving the page briefly).
- PlayerFactory
-
Shared
VideoPlayerControllerconstruction for feed / episode players. - PlayerSeekBar
- Seek bar with a center-out loading beam, progress thumb, and scrub time labels.
- PlayerSurface
-
Stable video surface that keeps the same
VideoPlayerinstance when promoting a parked controller (avoids black flash / remount). - SeriesInfo
- Series metadata for the episode binge player.
- VerticalPageRefresh
- Pull-to-refresh / pull-up load-more for a vertical full-screen PageView.
Functions
-
showEpisodeListSheet(
BuildContext context) → Future< void> - Modal episode list; jumps via EpisodePlayerScope.animateToEpisode.
-
showEpisodeQualitySheet(
BuildContext context, EpisodePlayerController controller, EpisodeItem episode) → Future< void> - Modal quality picker; applies selection via EpisodePlayerController.setQuality.
-
showEpisodeSpeedSheet(
BuildContext context, EpisodePlayerController controller) → Future< void> - Modal speed picker; applies selection via EpisodePlayerController.setSpeed.
Typedefs
- EpisodePlayerOverlayBuilder = Widget Function(BuildContext context, EpisodePlayerSlot slot)
- Builds chrome / overlays on top of the video surface for one episode page.
- EpisodePlayerShellBuilder = Widget Function(BuildContext context, EpisodePlayerController controller)
- Builds the empty / loading / error shell (full screen, no pages yet).
-
FeedPageLoader
= Future<
List< Function(int page)FeedItem> > - Loads a page of FeedItems. Return empty list when exhausted.
- FeedPlayerOverlayBuilder = Widget Function(BuildContext context, FeedPlayerSlot slot)
- Builds chrome / overlays on top of the video surface for one feed page.
- FeedPlayerShellBuilder = Widget Function(BuildContext context, FeedPlayerController controller)
- Builds the empty / loading / error shell (full screen, no pages yet).
-
HttpHeadersProvider
= Map<
String, String> Function({required bool isHls, required String url}) - Optional hooks for authenticated / regional CDNs.
-
SeriesLoader
= Future<
SeriesInfo> Function(int page) - Supplies series + a page of episodes. Page starts at 1.
- UrlTransformer = String Function(String url)