mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-12-06 15:39:41 +00:00
Key Improvements:
SpotubeMediaFactory: Handles the logic of creating SpotubeMedia instances, allowing for easier scalability and reducing repetitive code.
Dependency Injection (DI): CustomPlayer is injected into the AudioPlayerInterface, improving testability and modularity.
Helper Methods: Functions like getNetworkAddress() and getUriForTrack() simplify and centralize repeated logic, improving maintainability.
Playback Control Methods: Added play(), pause(), stop(), and seek() methods for better playback control with error handling.
PlaybackStateManager: Manages the state-related properties (isPlaying, duration, etc.), keeping the AudioPlayerInterface cleaner and more focused on playback control.
Advantages:
Separation of Concerns: The code is now better structured with clear separation between media management (SpotubeMedia), playback state management (PlaybackStateManager), and playback controls (AudioPlayerInterface).
Extensibility: The code is more scalable with the factory pattern, making it easy to add new track types or other media sources.
Testability: With dependency injection, you can easily mock the CustomPlayer and test the logic of AudioPlayerInterface independently.
Clean Code: Centralized logic and helper methods reduce code duplication, improving readability and maintainability.
|
||
|---|---|---|
| .. | ||
| collections | ||
| components | ||
| extensions | ||
| hooks | ||
| l10n | ||
| models | ||
| modules | ||
| pages | ||
| provider | ||
| services | ||
| themes | ||
| utils | ||
| generated_plugin_registrant.dart | ||
| main.dart | ||