Flureadium
A comprehensive Flutter plugin for reading EPUB ebooks, audiobooks, and comics using the Readium toolkits.
Features
- EPUB Reading: Full EPUB 2/3 support with customizable typography
- PDF Reading: PDF support via Readium's PDF adapters (Android via Pdfium, iOS via PDFKit)
- Audiobook Playback: Native audio with background playback support
- Text-to-Speech: Platform TTS with voice selection and rate control
- Synchronized Audio: Media overlay support for read-along experiences
- Highlighting: Decoration API for bookmarks, highlights, and annotations
- Cross-Platform: Android, iOS, macOS, and Web support
Quick Start
Installation
dependencies:
flureadium: ^0.1.0
Platform Setup
Android
- Set minimum SDK version in
android/app/build.gradle:
android {
defaultConfig {
minSdkVersion 24
}
}
- Change
MainActivityto extendFlutterFragmentActivity:
class MainActivity: FlutterFragmentActivity()
- If using TTS with
AudioService, add toAndroidManifest.xml:
<uses-permission android:name="android.permission.WAKE_LOCK" />
iOS
- Add Readium pods to
ios/Podfile:
target 'Runner' do
use_frameworks!
use_modular_headers!
pod 'PromiseKit', '~> 8.1'
pod 'ReadiumShared', podspec: 'https://raw.githubusercontent.com/readium/swift-toolkit/3.5.0/Support/CocoaPods/ReadiumShared.podspec'
pod 'ReadiumInternal', podspec: 'https://raw.githubusercontent.com/readium/swift-toolkit/3.5.0/Support/CocoaPods/ReadiumInternal.podspec'
pod 'ReadiumStreamer', podspec: 'https://raw.githubusercontent.com/readium/swift-toolkit/3.5.0/Support/CocoaPods/ReadiumStreamer.podspec'
pod 'ReadiumNavigator', podspec: 'https://raw.githubusercontent.com/readium/swift-toolkit/3.5.0/Support/CocoaPods/ReadiumNavigator.podspec'
pod 'ReadiumOPDS', podspec: 'https://raw.githubusercontent.com/readium/swift-toolkit/3.5.0/Support/CocoaPods/ReadiumOPDS.podspec'
pod 'ReadiumAdapterGCDWebServer', podspec: 'https://raw.githubusercontent.com/readium/swift-toolkit/3.5.0/Support/CocoaPods/ReadiumAdapterGCDWebServer.podspec'
pod 'ReadiumZIPFoundation', podspec: 'https://raw.githubusercontent.com/readium/podspecs/refs/heads/main/ReadiumZIPFoundation/3.0.1/ReadiumZIPFoundation.podspec'
# ... rest of your Podfile
end
- Add to
ios/Runner/Info.plistto allow local server:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true />
</dict>
Web
- Copy JavaScript file:
dart run flureadium:copy_js_file web/
- Add to
index.html:
<script src="flutter.js" defer></script>
<script src="readiumReader.js" defer></script>
Basic Usage
import 'package:flureadium/flureadium.dart';
// Get the singleton instance
final flureadium = Flureadium();
// Open a publication
final publication = await flureadium.openPublication('file:///path/to/book.epub');
// Display in your widget tree
ReaderWidget(
onReaderCreated: (controller) {
// Reader is ready
},
)
// Navigate
await flureadium.goRight();
await flureadium.goToLocator(savedPosition);
// Listen for position changes
flureadium.onTextLocatorChanged.listen((locator) {
saveReadingPosition(locator);
});
Documentation
- Full Documentation - Comprehensive guides and API reference
- API Reference - Generated dartdoc
- Example App
Supported Formats
| Format | Visual | TTS | Audio | Sync |
|---|---|---|---|---|
| EPUB 2 | Yes | Yes | - | Yes |
| EPUB 3 | Yes | Yes | Yes | Yes |
| WebPub | Yes | Yes | Yes | Yes |
| Android, iOS | - | - | - |
PDF support is available on Android (via Pdfium) and iOS (via PDFKit). See documentation for details.
Web Development
When making changes to the TypeScript files, rebuild the JavaScript:
npm run build
Run this from the root of the plugin directory.
Contributing
Contributions are welcome! Please read our Contributing Guide.
License
This project is licensed under the LGPL v3 -- see LICENSE for details.
This project is a fork of Notalib/flutter_readium.
Acknowledgments
Built on the excellent Readium project.