diff --git a/flutter-exoplayer/media3_exoplayer_creator/.gitignore b/flutter-exoplayer/flutter_beta_exoplayer_creator/.gitignore similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/.gitignore rename to flutter-exoplayer/flutter_beta_exoplayer_creator/.gitignore diff --git a/flutter-exoplayer/media3_exoplayer_creator/.metadata b/flutter-exoplayer/flutter_beta_exoplayer_creator/.metadata similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/.metadata rename to flutter-exoplayer/flutter_beta_exoplayer_creator/.metadata diff --git a/flutter-exoplayer/media3_exoplayer_creator/README.md b/flutter-exoplayer/flutter_beta_exoplayer_creator/README.md similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/README.md rename to flutter-exoplayer/flutter_beta_exoplayer_creator/README.md diff --git a/flutter-exoplayer/media3_exoplayer_creator/analysis_options.yaml b/flutter-exoplayer/flutter_beta_exoplayer_creator/analysis_options.yaml similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/analysis_options.yaml rename to flutter-exoplayer/flutter_beta_exoplayer_creator/analysis_options.yaml diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/.gitignore b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/.gitignore similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/.gitignore rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/.gitignore diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/build.gradle b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/build.gradle similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/build.gradle rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/build.gradle diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/src/debug/AndroidManifest.xml b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/debug/AndroidManifest.xml similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/src/debug/AndroidManifest.xml rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/debug/AndroidManifest.xml diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/AndroidManifest.xml b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/AndroidManifest.xml similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/AndroidManifest.xml rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/AndroidManifest.xml diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/kotlin/com/anirudhsevugan/md3exoplayer/media3_exoplayer_creator/MainActivity.kt b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/kotlin/com/anirudhsevugan/md3exoplayer/media3_exoplayer_creator/MainActivity.kt similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/kotlin/com/anirudhsevugan/md3exoplayer/media3_exoplayer_creator/MainActivity.kt rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/kotlin/com/anirudhsevugan/md3exoplayer/media3_exoplayer_creator/MainActivity.kt diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/drawable-v21/launch_background.xml b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/drawable-v21/launch_background.xml similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/drawable-v21/launch_background.xml rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/drawable-v21/launch_background.xml diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/drawable/launch_background.xml b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/drawable/launch_background.xml similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/drawable/launch_background.xml rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/drawable/launch_background.xml diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/values-night/styles.xml b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/values-night/styles.xml similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/values-night/styles.xml rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/values-night/styles.xml diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/values/styles.xml b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/values/styles.xml similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/src/main/res/values/styles.xml rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/main/res/values/styles.xml diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/app/src/profile/AndroidManifest.xml b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/profile/AndroidManifest.xml similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/app/src/profile/AndroidManifest.xml rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/app/src/profile/AndroidManifest.xml diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/build.gradle b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/build.gradle similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/build.gradle rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/build.gradle diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/gradle.properties b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/gradle.properties similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/gradle.properties rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/gradle.properties diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/gradle/wrapper/gradle-wrapper.properties b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/gradle/wrapper/gradle-wrapper.properties rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/gradle/wrapper/gradle-wrapper.properties diff --git a/flutter-exoplayer/media3_exoplayer_creator/android/settings.gradle b/flutter-exoplayer/flutter_beta_exoplayer_creator/android/settings.gradle similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/android/settings.gradle rename to flutter-exoplayer/flutter_beta_exoplayer_creator/android/settings.gradle diff --git a/flutter-exoplayer/media3_exoplayer_creator/assets/icon.png b/flutter-exoplayer/flutter_beta_exoplayer_creator/assets/icon.png similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/assets/icon.png rename to flutter-exoplayer/flutter_beta_exoplayer_creator/assets/icon.png diff --git a/flutter-exoplayer/media3_exoplayer_creator/lib/main.dart b/flutter-exoplayer/flutter_beta_exoplayer_creator/lib/main.dart similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/lib/main.dart rename to flutter-exoplayer/flutter_beta_exoplayer_creator/lib/main.dart diff --git a/flutter-exoplayer/media3_exoplayer_creator/lib/screens/video_screen.dart b/flutter-exoplayer/flutter_beta_exoplayer_creator/lib/screens/video_screen.dart similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/lib/screens/video_screen.dart rename to flutter-exoplayer/flutter_beta_exoplayer_creator/lib/screens/video_screen.dart diff --git a/flutter-exoplayer/media3_exoplayer_creator/lib/utils/permission_utils.dart b/flutter-exoplayer/flutter_beta_exoplayer_creator/lib/utils/permission_utils.dart similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/lib/utils/permission_utils.dart rename to flutter-exoplayer/flutter_beta_exoplayer_creator/lib/utils/permission_utils.dart diff --git a/flutter-exoplayer/media3_exoplayer_creator/lib/utils/web_vtt.dart b/flutter-exoplayer/flutter_beta_exoplayer_creator/lib/utils/web_vtt.dart similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/lib/utils/web_vtt.dart rename to flutter-exoplayer/flutter_beta_exoplayer_creator/lib/utils/web_vtt.dart diff --git a/flutter-exoplayer/media3_exoplayer_creator/pubspec.lock b/flutter-exoplayer/flutter_beta_exoplayer_creator/pubspec.lock similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/pubspec.lock rename to flutter-exoplayer/flutter_beta_exoplayer_creator/pubspec.lock diff --git a/flutter-exoplayer/media3_exoplayer_creator/pubspec.yaml b/flutter-exoplayer/flutter_beta_exoplayer_creator/pubspec.yaml similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/pubspec.yaml rename to flutter-exoplayer/flutter_beta_exoplayer_creator/pubspec.yaml diff --git a/flutter-exoplayer/media3_exoplayer_creator/test/widget_test.dart b/flutter-exoplayer/flutter_beta_exoplayer_creator/test/widget_test.dart similarity index 100% rename from flutter-exoplayer/media3_exoplayer_creator/test/widget_test.dart rename to flutter-exoplayer/flutter_beta_exoplayer_creator/test/widget_test.dart diff --git a/flutter-exoplayer/media3_exoplayer_creator/lib/widgets/video_player_widget.dart b/flutter-exoplayer/media3_exoplayer_creator/lib/widgets/video_player_widget.dart deleted file mode 100644 index f22ae60..0000000 --- a/flutter-exoplayer/media3_exoplayer_creator/lib/widgets/video_player_widget.dart +++ /dev/null @@ -1,199 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:video_player/video_player.dart'; -import 'package:chewie/chewie.dart'; -import 'package:http/http.dart' as http; -import 'dart:io'; // Import to use File class -import 'package:media3_exoplayer_creator/utils/permission_utils.dart'; // Import permission_utils.dart for permission handling -import 'package:keep_screen_on/keep_screen_on.dart'; // Import keep_screen_on -import 'package:flutter/services.dart'; // Import SystemChrome -import '../utils/web_vtt.dart'; // Import web_vtt.dart for subtitle handling - -class VideoPlayerWidget extends StatefulWidget { - final String videoUrl; - final String filePath; - final String subtitleUrl; - final String subtitleFilePath; - - const VideoPlayerWidget({ - Key? key, - required this.videoUrl, - required this.filePath, - required this.subtitleUrl, - required this.subtitleFilePath, - }) : super(key: key); - - @override - _VideoPlayerWidgetState createState() => _VideoPlayerWidgetState(); -} - -class _VideoPlayerWidgetState extends State { - late VideoPlayerController _videoPlayerController; - late ChewieController _chewieController; - late List _subtitles; - String? _currentSubtitle; - bool _isLoading = true; // Flag to track loading state of subtitles - - @override - void initState() { - super.initState(); - - // Request permission for subtitle files if a subtitle file path is provided - if (widget.subtitleFilePath.isNotEmpty) { - requestPermissionIfNeeded(widget.subtitleFilePath, context); // Correctly call the method here - } - - // Initialize the video player controller based on video URL or file path - if (widget.filePath.isNotEmpty) { - _videoPlayerController = VideoPlayerController.file(File(widget.filePath)); - } else { - _videoPlayerController = VideoPlayerController.networkUrl(Uri.parse(widget.videoUrl)); - } - - // Initialize the Chewie controller for video playback - _chewieController = ChewieController( - videoPlayerController: _videoPlayerController, - aspectRatio: 16 / 9, - autoPlay: true, - looping: true, - ); - - // Load subtitles if needed - _loadSubtitles(); - - // Keep the screen on while the video is playing - KeepScreenOn.turnOn(); - - // Hide system UI (status bar and navigation bar) when the video starts - SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); - - // Listen to video position changes to update subtitles - _videoPlayerController.addListener(_updateCurrentSubtitle); - - // Initialize the video player - _initializeVideoPlayer(); - } - - @override - void dispose() { - // Turn off the screen stay-on feature and reset the system UI when the widget is disposed - KeepScreenOn.turnOff(); - SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: SystemUiOverlay.values); // Restore UI to default - - _videoPlayerController.removeListener(_updateCurrentSubtitle); - _videoPlayerController.dispose(); - super.dispose(); - } - - // Method to load subtitles (you can adapt it to your subtitle parsing logic) - Future _loadSubtitles() async { - setState(() { - _isLoading = true; // Start loading subtitles - }); - - // Check if subtitle path is provided - if (widget.subtitleFilePath.isNotEmpty) { - // Load subtitle from local file - try { - final file = File(widget.subtitleFilePath); - final subtitleData = await file.readAsString(); - setState(() { - _subtitles = parseWebVtt(subtitleData); // Use parseWebVtt from web_vtt.dart - _isLoading = false; // Subtitles loaded successfully - }); - } catch (e) { - setState(() { - _isLoading = false; // Failed to load subtitles - }); - print('Error loading subtitle file: $e'); - } - } else if (widget.subtitleUrl.isNotEmpty) { - // Load subtitle from URL - try { - final response = await http.get(Uri.parse(widget.subtitleUrl)); - if (response.statusCode == 200) { - setState(() { - _subtitles = parseWebVtt(response.body); // Use parseWebVtt from web_vtt.dart - _isLoading = false; // Subtitles loaded successfully - }); - } else { - setState(() { - _isLoading = false; // Failed to load subtitles from URL - }); - print('Failed to load subtitle from URL: ${response.statusCode}'); - } - } catch (e) { - setState(() { - _isLoading = false; // Failed to load subtitles - }); - print('Error loading subtitle from URL: $e'); - } - } - } - - // Method to update the current subtitle based on the video position - void _updateCurrentSubtitle() { - final currentTime = _videoPlayerController.value.position; - - for (var cue in _subtitles) { - if (currentTime >= cue.start && currentTime <= cue.end) { - setState(() { - _currentSubtitle = cue.text; - }); - return; - } - } - - setState(() { - _currentSubtitle = ''; - }); - } - - void _initializeVideoPlayer() async { - // Initialize the video player - await _videoPlayerController.initialize(); - - // Update loading state once the video is ready - setState(() { - _isLoading = false; - }); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Stack( - children: [ - // Background set to black - Container( - color: Colors.black, - child: Chewie(controller: _chewieController), // Video player widget - ), - // Show a loading indicator while video or subtitles are loading - if (_isLoading) - Center( - child: CircularProgressIndicator(), - ), - // Display the current subtitle if available - if (_currentSubtitle != null && _currentSubtitle!.isNotEmpty && !_isLoading) - Positioned( - bottom: 70, // Adjusted the bottom padding to be higher - left: 0, - right: 0, - child: Container( - padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10), - color: Colors.black.withOpacity(0.7), // Black background with transparency - child: Text( - _currentSubtitle!, - style: TextStyle( - fontSize: 19, - color: Colors.white, - ), - textAlign: TextAlign.center, - ), - ), - ), - ], - ), - ); - } -}