A modern, feature-rich IPTV streaming application built with Flutter, optimized for Android TV with full D-pad navigation support.
- 📡 M3U Playlist Support - Load channels from any M3U/M3U8 playlist URL
- 📺 Android TV Optimized - Full D-pad navigation and Leanback launcher support
- 🎨 Modern UI - Beautiful dark theme with glassmorphism effects
- 🔍 Search & Filter - Search channels by name or filter by group/category
- 🖼️ Channel Logos - Cached network images for smooth performance
- ⚡ Smart Caching - 1-hour cache to reduce network requests
- 🎬 Video Playback - Powered by Chewie and video_player
- 🎯 Focus Management - Intuitive remote control navigation
- 📱 Responsive Design - Works on Android TV, tablets, and phones
- Flutter SDK (3.10.1 or higher)
- Dart SDK (3.10.1 or higher)
- Android Studio or VS Code
- Android TV device or emulator (optional)
-
Clone the repository
git clone https://github.com/mohitj2401/live_iptv_flutter.git cd live_iptv_flutter -
Install dependencies
flutter pub get
-
Configure your IPTV playlist
Open
lib/services/iptv_service.dartand replaceYOUR_IPTV_URLwith your M3U playlist URL:static const String playlistUrl = 'https://your-iptv-provider.com/playlist.m3u';
-
Run the app
# For Android TV/Mobile flutter run # Build release APK flutter build apk --release
- ✅ Android TV (Primary target)
- ✅ Android Mobile & Tablet
⚠️ iOS (Not tested)⚠️ Web (Not tested)
lib/
├── main.dart # App entry point
├── models/
│ └── channel.dart # Channel data model
├── providers/
│ └── channel_provider.dart # State management
├── screens/
│ ├── channel_list_screen.dart # Main channel grid
│ └── player_screen.dart # Video player
├── services/
│ ├── iptv_service.dart # M3U playlist fetching
│ └── m3u_parser.dart # M3U format parser
├── theme/
│ └── app_theme.dart # Dark theme configuration
└── widgets/
├── channel_card.dart # Channel grid item
├── error_widget.dart # Error display
└── loading_widget.dart # Loading indicator
The app is fully optimized for Android TV remote control:
- D-pad - Navigate through channels
- Enter/Select - Play selected channel
- Back - Return to channel list or exit
- Menu - Open search/filter options
| Package | Version | Purpose |
|---|---|---|
| provider | ^6.1.1 | State management |
| http | ^1.2.0 | HTTP requests |
| video_player | ^2.8.2 | Video playback |
| chewie | ^1.7.5 | Video player UI |
| cached_network_image | ^3.3.1 | Image caching |
| google_fonts | ^6.1.0 | Typography |
Edit lib/services/iptv_service.dart:
class IPTVService {
static const String playlistUrl = 'YOUR_IPTV_URL';
// ...
}Modify cache expiration in lib/services/iptv_service.dart:
static const Duration cacheExpiration = Duration(hours: 1);Edit colors in lib/theme/app_theme.dart to match your branding.
Add screenshots of your app here
- Some IPTV streams may require specific headers or authentication
- HLS streams work best; RTSP support depends on device
- Channel logos may not display if URL is invalid
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Mohit Jain
- GitHub: @mohitj2401
- Flutter team for the amazing framework
- All the open-source package maintainers
- IPTV community for playlist formats and standards
If you encounter any issues or have questions:
- Open an issue
⭐ Star this repo if you find it helpful!