PdfFlowView class

A "reading flow" PDF widget that lays out every page as a vertical column of images, sized to the height of its content and without any internal scrolling of its own.

Unlike PdfViewer — which is an interactive viewer that owns its own scroll and pinch-to-zoom — PdfFlowView is a static, content-sized block meant to be dropped inside a scrolling parent (e.g. a CustomScrollView via a SliverToBoxAdapter, or a ListView/SingleChildScrollView). The parent handles all scrolling; this widget never steals the gesture. This is the PDF counterpart of a content-sized WebView with internal scrolling disabled.

Pages are rendered lazily: each page slot decodes its image only when it becomes (close to) visible in the parent viewport, showing a placeholder until then, and releases the decoded image again once it scrolls far enough off screen. Visibility is derived from the nearest ancestor Scrollable; if there is none, every page is rendered.

Inheritance

Constructors

PdfFlowView({Key? key, Uint8List? pdfData, String? pdfPath, double pageSpacing = 8, EdgeInsets padding = EdgeInsets.zero, Color? backgroundColor, void onPageTap(int page)?, Widget pagePlaceholderBuilder(BuildContext context, int page)?, double cacheExtent = 600, void onError(Object error)?, Widget errorBuilder(BuildContext context, Object error)?})
Creates a PdfFlowView.
const

Properties

backgroundColor → Color?
Background color used behind pages and by the default placeholder.
final
cacheExtent → double
How far outside the visible viewport (in logical pixels) a page is still considered "visible" and kept rendered. Larger values pre-render more pages ahead of scrolling at the cost of memory.
final
errorBuilder → Widget Function(BuildContext context, Object error)?
Builds the widget shown when the document fails to load or parse.
final
hashCode → int
The hash code for this object.
no setterinherited
key → Key?
Controls how one widget replaces another widget in the tree.
finalinherited
onError → void Function(Object error)?
Called when the document fails to load or parse (network/asset error or a corrupt/encrypted PDF). Use it to log the error or surface an app-level message. The widget still shows its own error state (see errorBuilder).
final
onPageTap → void Function(int page)?
Called when a page is tapped. The page number is 1-indexed.
final
padding → EdgeInsets
Padding around the whole column of pages.
final
pagePlaceholderBuilder → Widget Function(BuildContext context, int page)?
Builds the placeholder shown for a page (1-indexed) while it is not yet rendered. Defaults to a plain grey skeleton.
final
pageSpacing → double
Vertical space inserted between consecutive pages.
final
pdfData → Uint8List?
Raw bytes of a PDF document, displayed directly without any path or URL.
final
pdfPath → String?
Path to a PDF file. Can be a URL (starting with http:// or https://) or an asset path.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

createElement() → StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() → State<PdfFlowView>
Creates the mutable state for this widget at a given location in the tree.
override
debugDescribeChildren() → List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) → String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String
Returns a one-line detailed description of the object.
inherited
toStringShort() → String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited