Overview
TheAudiobookDetails screen displays comprehensive information about a specific audiobook, including cover art, description, author information, ratings, audio file chapters, and subjects. It provides controls for playing chapters and managing favorites.
File Location: lib/screens/audiobook_details/audiobook_details.dart
Purpose and Functionality
The AudiobookDetails screen serves as the primary interface for:- Displaying audiobook metadata (title, author, description, origin)
- Showing high-quality cover images
- Listing all audio file chapters with durations
- Playing individual chapters or resuming from history
- Adding/removing audiobooks from favorites
- Downloading audiobooks for offline playback
- Navigating to genre-specific audiobook lists via subject tags
- Showing audiobook statistics (downloads, ratings for LibriVox content)
Screen Parameters
Key Components
State Management
UsesAudiobookDetailsBloc for managing audiobook details and favorite status:
Data Storage
Utilizes Hive boxes for persistence:Services
- AudioHandlerProvider: Manages audio playback via
audio_service - HistoryOfAudiobook: Tracks playback history and resume positions
- WeSlideController: Controls the sliding player panel
Widget Structure
The screen layout (within aSingleChildScrollView):
-
App Bar
- Audiobook title
- Favorite icon button (heart)
-
Cover Image (200x200, rounded corners)
- Low/high quality image with LowAndHighImage widget
-
Metadata Section
- Title
- Author
- Download count (LibriVox only)
- Origin (librivox/youtube/local)
- Rating widget (LibriVox only)
-
Action Card (orange accent color)
- Download button
- Play button
-
Description Section
- Expandable description text
-
Audio Files List
- ListView of chapters with titles and durations
- Each chapter has a play button
-
Subjects Section
- Chip widgets for each subject/genre
- Tappable to navigate to genre page (LibriVox only)
BLoC Events
FetchAudiobookDetails
GetFavouriteStatus
FavouriteIconButtonClicked
BLoC States
Initial and Loading States
AudiobookDetailsInitial- Initial state before fetchingAudiobookDetailsLoading- Fetching audiobook details
Success States
AudiobookDetailsLoaded(audiobookFiles)- Contains list ofAudiobookFileobjectsAudiobookDetailsFavourite(isFavourite)- Boolean indicating favorite status
Failure States
AudiobookDetailsError- Failed to fetch audiobook details
Navigation
Genre Audiobooks Screen
Audiobook Details Screen
Code Examples
Playing a Chapter
Resume Playback from History
Favorite Icon Button
Audio Files List
Subject Tags with Navigation
Download Count Formatting
Lifecycle Management
Initialization
Dependency Injection
Dependencies
flutter_bloc- State managementprovider- Dependency injectiongo_router- Navigationgoogle_fonts- Typographyhive- Local storagewe_slide- Sliding panel for playerionicons- Icon pack for play button
Custom Widgets Used
LowAndHighImage- Progressive image loading widgetRatingWidget- Star rating displayDescriptionText- Expandable text widget for descriptionsDownloadButton- Custom download button with progressAppCircularProgressIndicator- Branded loading indicator