flutter_epub_viewer

Last updated:

0 purchases

flutter_epub_viewer Image
flutter_epub_viewer Images
Add to Cart

Description:

flutter epub viewer

A Flutter package for viewing Epub documents, developed by combining the power of Epubjs and flutter_inappwebview
Features #

Highlight text
Search in Epub
List chapters
Text selection
Highly customizable UI
Resume reading using cfi
Custom context menus for selection
Load from File, URl, Assets


Limitations #

opf format not supported fully

Getting started #
In your Flutter project add the dependency:
flutter pub add flutter_epub_viewer
copied to clipboard


Important: Complete the platfrom-wise setup from here #

Enable clear text traffic, instructions here

Make sure to follow and complete each step
Usage #
Basic usage #
import 'package:flutter_epub_viewer/flutter_epub_viewer.dart';
import 'package:flutter/material.dart';

class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});

final String title;

@override
State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
final epubController = EpubController();

var textSelectionCfi = '';

@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
children: [
Expanded(
child: EpubViewer(
epubSource: EpubSource.fromUrl(
'https://github.com/IDPF/epub3-samples/releases/download/20230704/accessible_epub_3.epub'),
epubController: epubController,
displaySettings:
EpubDisplaySettings(flow: EpubFlow.paginated, snap: true),
onChaptersLoaded: (chapters) {},
onEpubLoaded: () async {},
onRelocated: (value) {},
onTextSelected: (epubTextSelection) {},
),
),
],
)),
);
}
}

copied to clipboard
Parameters and callbacks #
//Epub controller to manage epub
final EpubController epubController;

///Epub source, accepts url, file or assets
///opf format is not tested, use with caution
final String epubSource;

///Epub headers to load epub from network
final Map<String, String> headers;

///Initial cfi string to specify which part of epub to load initially
///if null, the first chapter will be loaded
final String? initialCfi;

///Call back when epub is loaded and displayed
final VoidCallback? onEpubLoaded;

///Call back when chapters are loaded
final ValueChanged<List<EpubChapter>>? onChaptersLoaded;

///Call back when epub page changes
final ValueChanged<EpubLocation>? onRelocated;

///Call back when text selection changes
final ValueChanged<EpubTextSelection>? onTextSelected;

///Callback for handling annotation click (Highlight and Underline)
final ValueChanged<String>? onAnnotationClicked;

///initial display settings
final EpubDisplaySettings? displaySettings;

///context menu for text selection
///if null, the default context menu will be used
final ContextMenu? selectionContextMenu;
copied to clipboard
Methods #
///Move epub view to a specific area using Cfi string or chapter href
epubController.display(cfi:cfiString)

///moves to next page
epubController.next()

///Moves to the previous page in epub view
epubController.prev()

///Returns the current location of epub viewer
epubController.getCurrentLocation()

///Returns list of [EpubChapter] from epub,
/// should be called after onChaptersLoaded callback, otherwise returns empty list
epubController.getChapters()

///Search in epub using query string
///Returns a list of [EpubSearchResult]
epubController.search(query:query)

///Adds a highlight to epub viewer
epubController.addHighlight(
cfi:cfiString,
color:color
opacity:0,5
)

///remove highlight
epubController.removeHighlight(cfi:cfi)

///Add underline annotation
epubController.addUnderline(cfi:cfi)

///Remove underline annotation
epubController.removeUnderline(cfi:cfi)

///Set [EpubSpread] value
epubController.setSpread(spread:spread)

///Set [EpubFlow] value
epubController.setFlow(flow:flow)

///Set [EpubManager] value
epubController.setManager(manager:manager)

///Adjust font size in epub viewer
epubController.setFontSize(fontSize:16)

///Extract text from a given cfi range
epubController.extractText(startCfi:cfi,endCfi:cfi)

///Extract text from current page
epubController.extractCurrentPageText()
copied to clipboard
Known Issues #

onRelocated callback is broken when snap==true in epubDisplaySettings for android

Upcoming features #

Annotations customization
More callbacks (rendered, error etc)
Night mode and Theme customization
Reading progress

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.