import 'package:flutter/material.dart'; import '../../core/data/models/drama.dart'; import '../../core/data/repositories/watch_history_repository.dart'; import '../../core/data/services/android_picture_in_picture.dart'; import '../../core/data/services/playback_queue.dart'; import '../../core/data/services/playback_session.dart'; import '../../core/data/services/video_player_port.dart'; import '../home/home_feed_sections.dart'; class PlayerLogic { PlayerLogic({required this.history, required this.pictureInPicture}); final WatchHistoryRepository history; final AndroidPictureInPicture pictureInPicture; late PageController pages; late PlaybackQueue queue; late HomeFeedSections homeSections; late List visibleIndices; HomeFeedCategory category = HomeFeedCategory.recommended; int categoryRequest = 0; late PlaybackSession session; VideoPlayerPort? trackedPlayer; Episode? trackedEpisode; Drama? trackedDrama; DateTime lastProgressWrite = DateTime.fromMillisecondsSinceEpoch(0); Future pendingWrite = Future.value(); int pageRequest = 0; bool muted = false; bool stoppedAtFeedEnd = false; VideoPlayerPort? scrubbingPlayer; bool fullscreen = false; bool pip = false; bool pipPreparing = false; bool get immersive => fullscreen || pip || pipPreparing; }