pdf_reading_tracker 4.0.0 copy "pdf_reading_tracker: ^4.0.0" to clipboard
pdf_reading_tracker: ^4.0.0 copied to clipboard

Production-ready Flutter PDF reader built on Syncfusion PDF Viewer, with reading progress tracking, bookmarks, highlights, notes, SQLite persistence, and PDF merge/split.

pdf_reading_tracker #

A production-ready Flutter PDF reader package powered by Syncfusion PDF Viewer.

Track reading progress, continue reading from where users left off, manage bookmarks, create annotations, attach text-linked notes, import PDFs from device storage, merge and split PDFs, and persist everything locally using SQLite.

Designed for educational, productivity, and document-centric applications.


Features #

Category Capabilities
PDF Reading High-quality rendering, progress tracking, continue reading, recent PDFs, jump-to-page, multi-PDF support, double-tap zoom, vertical/horizontal navigation
Search Built-in text search, search navigation, match highlighting
Bookmarks Add/remove bookmarks, bookmark notes, SQLite-backed persistence
Annotations Highlight, underline, strikethrough, squiggly, full persistence and restoration
Notes Text-linked notes, edit/delete, jump-to-note, persistent storage
PDF Management Import from device, persistent library, continue-reading & recent dashboards, auto-restore after restart
PDF Operations Merge, split, typed exception handling
Storage SQLite persistence, offline-first, temporary cache cleanup

PDF Reading #

  • High-quality PDF rendering using Syncfusion PDF Viewer
  • Reading progress tracking
  • Continue reading
  • Recent PDFs
  • Jump to page
  • Multi-PDF support
  • Double-tap zoom
  • Vertical and horizontal navigation
  • Persistent reading position
  • Built-in PDF text search
  • Search navigation
  • Match highlighting

Bookmarks #

  • Add bookmarks
  • Remove bookmarks
  • Bookmark notes
  • Bookmark persistence
  • SQLite-backed storage

Annotations #

  • Highlight
  • Underline
  • Strikethrough
  • Squiggly
  • Annotation persistence
  • Annotation restoration after restart

Notes #

  • Text-linked notes
  • Edit notes
  • Delete notes
  • Jump to note
  • Persistent storage

User PDF Management #

  • Import PDFs from device storage
  • Persistent PDF library
  • Continue reading dashboard
  • Recent PDFs dashboard
  • Automatic restoration after app restart

PDF Operations #

  • Merge multiple PDFs
  • Split PDFs into smaller documents
  • Typed exception handling
  • Syncfusion PDF processing

Storage #

  • SQLite persistence
  • Offline first
  • Lightweight database
  • Persistent PDF storage
  • Temporary cache cleanup
  • Storage-efficient architecture

Platform Support #

Android iOS

Installation #

dependencies:
  pdf_reading_tracker: ^4.0.0

Import #

import 'package:pdf_reading_tracker/pdf_reading_tracker.dart';

Quick Start #

PdfReadingTrackerViewer(
  pdfId: 'clean_architecture',
  pdfTitle: 'Clean Architecture',
  assetPath: 'assets/pdfs/clean_architecture.pdf',
)

Complete Widget Example #

PdfReadingTrackerViewer(
  pdfId: 'flutter_notes',
  pdfTitle: 'Flutter Notes',
  assetPath: 'assets/pdfs/flutter_notes.pdf',

  showAppBar: true,
  showBottomBar: true,
  showBookmarkFab: true,

  enableSearch: true,
  enableHighlight: true,

  swipeHorizontal: false,
  enableDoubleTap: true,
)

Configuration #

Parameter Type Default Description
pdfId String required Stable unique identifier for this PDF
pdfTitle String required Display title shown in the app bar
assetPath String required Path to the bundled or imported PDF
showAppBar bool true Show/hide the reader's app bar
showBottomBar bool true Show/hide the bottom navigation bar
showBookmarkFab bool true Show/hide the floating bookmark button
enableSearch bool true Enable in-document text search
enableHighlight bool true Enable highlight annotations
swipeHorizontal bool false Horizontal vs. vertical page navigation
enableDoubleTap bool true Enable double-tap-to-zoom

Reading Progress API #

// Save progress
await PdfReadingTracker.saveProgress(
  ReadingProgress.create(
    pdfId: 'flutter_notes',
    currentPage: 25,
    totalPages: 100,
    title: 'Flutter Notes',
  ),
);

// Get progress
final progress = await PdfReadingTracker.getProgress('flutter_notes');

// Get recently read
final recent = await PdfReadingTracker.getRecentlyRead();

Bookmarks API #

await PdfReadingTracker.addBookmark(
  Bookmark.create(
    pdfId: 'flutter_notes',
    page: 25,
    note: 'Important topic',
  ),
);

final bookmarks = await PdfReadingTracker.getBookmarks('flutter_notes');

Highlights API #

final highlights = await PdfReadingTracker.getHighlights('flutter_notes');

Notes API #

final notes = await PdfReadingTracker.getNotes('flutter_notes');

Search API #

Search is available directly on PdfReadingTrackerViewer via enableSearch: true, exposing in-document text search with navigation between matches and highlighted results.


PDF Import #

final picked = await PdfPickerService.pickPdf();

PDF Merge #

final mergedPdf = await PdfMergeService.merge(
  inputPaths: [pdf1, pdf2, pdf3],
);

PDF Split #

final files = await PdfSplitService.split(
  pdfPath: sourcePdf,
  pagesPerFile: 25,
);

Architecture #

  • Syncfusion PDF Viewer for rendering
  • Syncfusion PDF processing for merge/split
  • SQLite persistence layer
  • Offline-first design
  • Service-based architecture separating reading, bookmarks, annotations, and notes

Storage #

  • SQLite-backed, lightweight schema
  • Efficient annotation and note storage
  • Automatic cleanup of temporary imported PDFs

Performance #

  • Background isolate-based page geometry reads to avoid UI jank
  • Debounced progress persistence to minimize database writes

Offline Support #

Fully offline-first — all reading progress, bookmarks, highlights, and notes are persisted locally via SQLite with no network dependency.


Example App #

The example/ app demonstrates the full feature set: PDF reading, progress tracking, continue reading, recent PDFs, bookmarks, notes, highlights, PDF import, merge, and split.


Roadmap #

  • Dominant/exact page detection improvements
  • Expanded search customization
  • Additional annotation types

Contributing #

Issues and pull requests are welcome via the issue tracker.


Known Limitations #

  • Reading progress relies on Syncfusion page-change events combined with visible-area detection; exact dominant-page accuracy is being refined.
  • Native swipe-threshold page snapping is not yet implemented (tracked for a future release pending a Syncfusion viewer upgrade).

License #

MIT License

1
likes
60
points
414
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Production-ready Flutter PDF reader built on Syncfusion PDF Viewer, with reading progress tracking, bookmarks, highlights, notes, SQLite persistence, and PDF merge/split.

Repository (GitHub)
View/report issues

Topics

#pdf #pdf-viewer #pdf-reader #annotations #sqlite

License

MIT (license)

Dependencies

file_picker, flutter, path, path_provider, sqflite, syncfusion_flutter_pdf, syncfusion_flutter_pdfviewer, wakelock_plus

More

Packages that depend on pdf_reading_tracker