Aug 20, 2020
Creating A Customisable Video Player In Flutter
How to easily create a video player in Flutter using Flick Video Player.
Author


Book a call
Table of Contents
video_player under the hood which gives low level access for video playback.Check out the code on Github - https://github.com/GeekyAnts/flick-video-player
Flick uses the official video player plugin under the hood and lets you create amazing looking players with all the necessary required features of a video player.


Features provided by Flick
- UI widgets to control the player like play/pause, progress bar etc.
- Auto hide controls.
- Double tap to seek video.
- On video tap play/pause, mute/unmute, or perform any action on video.
- Custom animations.
- Custom controls for normal and fullscreen.
- Auto-play list of videos.
- Many more..
Architecture of Flick Video Player

The official Flutter video player plugin is used to stream video on native devices.
2. FlickManager
FlickManager initialises and manages FlickVideoManager, FlickControlManager and FlickDisplayManager, which are responsible for interacting with the video_player plugin to perform actions on the player like play/pause, video seek etc. and listen to the current state of the player.
This manager manages video related operations like initializing the video, video played progress, isBuffering, changing the video etc.
This manager manages controls for the video like play/pause, mute/unmute, toggle fullscreen, seek video, replay etc.
FlickDisplayManager manages auto hide and show of controls (eg-when user taps on screen), showes forward/backward seek widgets (eg-when user double taps to seek video)
Flick widgets are some commonly used controls and actions which the user will interact with, like play/pause button. These widgets interact with sub-managers to perform operations. Eg - FlickPlayToggle listens to FlickVideoManager to check if video is playing or not and shows the play/pause button accordingly. If the user presses the play/pause button, then FlickControlManager is called upon to perform the action. There are some widgets which are referred to as action widgets which do not provide physical widgets on the screen but are useful to perform actions on videos like FlickShowControlsAction, which shows/hide controls when user taps on the screen, FlickSeekVideoAction which seeks video by 10 seconds (or any user provided value) on double tap of the screen.
- FlickPlayToggle - Play/Pause the video.
- FlickSoundToggle - Mute/Unmute the video.
- FlickFullscreenToggle - Toggle fullscreen mode.
- FlickVideoProgressBar - Progress bar for the video.
- FlickTotalDuration - Total duration of the video in hh:mm format.
- FlickCurrentPosition - Current position of the video in hh:mm format.
- FlickVideoBuffer - Widget shown when video is buffering.
- FlickAutoHideChild - Widget to auto hide/show its child on FlickShowControlsAction.
Action Widgets: - FlickShowControlsAction - Widget to show/hide controls on tap.
- FlickSeekVideoAction - Widget to seek video forward/backward on double tap.
- FlickTogglePlayAction - Widget to play/pause video on tap of the screen.
- FlickToggleSoundAction - Widget to mute/unmute video on tap of the screen.
How to use?
Add the following dependencies in your pubspec.yaml file of your Flutter project.
Create a FlickManager and pass the manager to FlickVideoPlayer. Make sure to dispose off FlickManager after use.
FlickVideoWithControls helps you to render the video and controls widgets passe. It also helps you to manage how the video fits on the screen.
What you can create?
Flick is highly customisable and lets you play around and create some amazing looking players. Here are few examples created using Flick.


Explore
We have just scratched the surface there is a lot to play around with, so try cloning the repository and get your hands dirty. PR And Issues are welcome on the official Github repository - https://github.com/GeekyAnts/flick-video-player.
Subscribe to Our Newsletter
Subscribe to RSS
Press & Media Hub RSS FeedRelated Articles.
More from the engineering frontline.
Dive deep into our research and insights on design, development, and the impact of various trends to businesses.

Jun 27, 2026
Building a Resilient Hybrid-Cloud Network with WireGuard HA, Route-Based Failover, and Deep Observability

Jun 19, 2026
We Built a 114-Second AWS-to-Azure Failover. Here’s What We Learned

Jun 12, 2026
Cloud-Native and Cloud-Agnostic Are Not Ideologies; They Are Business-Stage Decisions

Jun 8, 2026
Geeklego: The Open-Source Design System Built to Work With AI

May 18, 2026
Your Vibe Code Has No Memory. DESIGN.md Fixes That.

May 14, 2026