name: xtremobile description: High-performance IPTV application (Android, iPhone, iPad) with Xtream Codes API publish_to: 'none' version: 1.7.3+17 environment: sdk: '>=3.0.0 <4.0.0' dependencies: flutter: sdk: flutter # State Management flutter_riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 # Local Database (Web IndexedDB) hive: ^2.2.3 hive_flutter: ^1.1.0 # Networking dio: ^5.7.0 dio_cache_interceptor: ^3.5.1 dio_cache_interceptor_hive_store: ^3.2.2 http: ^1.2.2 # EPG (XMLTV fallback parsing) xml: ^6.5.0 # Routing go_router: ^13.2.5 # Video Player (FFmpeg-based for full codec support) media_kit: ^1.1.11 media_kit_video: ^1.2.5 media_kit_libs_video: ^1.0.5 # Épinglé : tiré par media_kit_video (^3.0.2). À partir de 3.4.2, le plugin # iOS utilise FlutterSceneLifeCycleDelegate / addSceneDelegate, des API # apparues dans Flutter 3.38, sans relever sa contrainte `flutter:` — pub le # sélectionne donc et la compilation Swift échoue sur le Flutter 3.35.3 des # workflows. 3.4.1 est la dernière version sans ces appels. # À relâcher le jour où les workflows passeront à Flutter >= 3.38. volume_controller: 3.4.1 # UI Components google_fonts: ^6.2.1 cached_network_image: ^3.3.1 # Security crypto: ^3.0.3 uuid: ^4.4.0 # Utilities intl: ^0.19.0 equatable: ^2.0.5 shared_preferences: ^2.3.2 path_provider: ^2.1.5 video_player: ^2.10.1 wakelock_plus: ^1.2.8 # Épinglé : la 12.4.0 appelle NSProcessInfo.isiOSAppOnVision derrière un # `@available(iOS 26.1, *)`, ce qui exige le SDK d'Xcode 26.1 — plus récent # que celui du runner macOS. 12.3.0 est la dernière version sans cet appel. # À relâcher le jour où le workflow iOS utilisera un Xcode >= 26.1. device_info_plus: 12.3.0 shelf_router: ^1.1.4 shelf_static: ^1.1.3 flutter_cache_manager: ^3.4.1 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^3.0.2 flutter_launcher_icons: ^0.14.3 # Code Generation build_runner: ^2.4.13 riverpod_generator: ^2.4.0 hive_generator: ^2.0.1 # Les icônes Android (mipmap, adaptative, bannière TV) sont générées par # scripts/generate_icons.py et versionnées : ne pas les écraser ici. flutter_launcher_icons: android: false ios: true image_path: "assets/images/app_icon_ios.png" # iOS refuse une icône comportant un canal alpha. remove_alpha_ios: true flutter: uses-material-design: true assets: - assets/images/