logo banner

EPub Reader Highlight

GitHub stars

Table of Contents


EPub Reader Highlight is a Flutter application that offers a complete solution for reading books in the Epub format. With an intuitive interface and advanced features, this tool allows developers to create personalized and efficient reading experiences for their users.


  • Text Highlight: Select important excerpts from the book and apply different highlight colors to facilitate review and organization of the content.
  • Chapter List: Easily navigate between the book's chapters, viewing the title and number of each one.
  • Highlight Management: Access an organized list of all added highlights, with the option to filter by color or chapter.
  • Customizable Interface: Adapt the reader's appearance to your preferences, with options to adjust font size, line spacing, and reading mode.
  • Last Paragraph Access: Access the last paragraph read in the book and manage the text selected for highlights, allowing developers to save and manage the reading progress and selected text as desired.


Here are some screenshots of EPub Reader Highlight in action:

Text Highlight

image highlight

Chapter List

image chapter

Highlight Management

Highlight Management



  1. Clone the repository:
    git clone https://github.com/danielmaques/epub_reader_highlight.git
  2. Navigate to the project directory:
    cd epub_reader_highlight
  3. Install the dependencies:
    flutter pub get
  4. Run the application:
    flutter run

Usage Examples

class _MainAppState extends State<MainApp> {
  late EpubController _epubReaderController;

  void initState() {

    /// Assets
    /// EpubDocument.openAsset('assets/gentle-green-obooko.epub')
    /// EpubDocument.openFile(path)

    _epubReaderController = EpubController(
      document: EpubDocument.openAsset('assets/gentle-green-obooko.epub'),

    _epubReaderController = EpubController(
      document: EpubDocument.,

  Widget build(BuildContext context) {
    return MaterialApp(
      home: Container(
        color: Colors.white,
        child: SafeArea(
          bottom: false,
          child: Scaffold(
            backgroundColor: Colors.white,
            appBar: AppBar(
              title: EpubViewActualChapter(
                controller: _epubReaderController,
                builder: (chapterValue) => Text(
                  'Chapter: ${chapterValue?.chapter?.Title?.replaceAll('\n', '').trim() ?? ''}',
                  textAlign: TextAlign.start,
            drawer: Drawer(
              child: EpubViewTableOfContents(
                controller: _epubReaderController,
            body: EpubView(
              builders: EpubViewBuilders<DefaultBuilderOptions>(
                options: const DefaultBuilderOptions(
                  textStyle: TextStyle(),
                chapterDividerBuilder: (_) => Container(),
              controller: _epubReaderController,
  • Text Highlight: To highlight a section, simply select the desired text and choose a highlight color.
  • Chapter Navigation: Use the chapter menu to easily navigate through the book.
        controller: _epubReaderController,
  • Interface Customization: Access the app settings to adjust the font, spacing, and reading mode.
  • Last Paragraph Access:

    onHighlightTap: (selectedTextModel) {
        print('Highlighted Text: $selectedTextModel');
    paragraphIndexOnDispose: (paragraphIndex) {
        print('Last paragraph Index: $paragraphIndex');


Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion to improve this project, please fork the repository and create a pull request. You can also simply open an issue with the appropriate tag. Don't forget to give the project a star! Thank you very much!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Be sure to include a tag and follow Conventional Commits and Semantic Versioning when submitting your commit and/or creating the issue.


Thanks to all the people who have contributed to this project. Without you, this project would not be possible.

Daniel Marques

Gabriel Barreto Matos Maia


This project is licensed under the MIT License.