UPdfViewer class

Full PDF reader in pure Dart (all platforms): search, select/copy, outline, thumbnails, night mode, highlights, notes, drawing, save. UPdfViewer(url: "https://x.com/a.pdf")

Inheritance
Available extensions

Constructors

UPdfViewer({String? base64Pdf, Uint8List? bytes, String? url, String? filePath, String? asset, UPdfController? controller, UPdfEditController? editController, UDocAnnotationController? annotations, String password = "", int initialPage = 0, String? title, bool showToolbar = true, bool showBottomBar = true, bool showSidebar = true, bool showScrollThumb = true, bool showBackButton = false, bool allowSelection = true, bool allowCopy = true, bool allowShare = true, bool enableMarkup = true, bool enableAnnotations = false, bool enableDrawing = true, UDocDrawController? drawController, List<UDocMarkupKind> markupKinds = UDocMarkupKind.values, String? annotationData, String? annotationStorageKey, bool persistAnnotations = true, void onAnnotationsChanged(String data)?, UDocNoteDisplay noteDisplay = UDocNoteDisplay.badge, UDocTextGeometry textGeometry = UDocTextGeometry.auto, String? savePath, UDocScrollMode scrollMode = UDocScrollMode.verticalContinuous, UDocSpread spread = UDocSpread.none, UDocDirection? direction, UDocColorMode colorMode = UDocColorMode.normal, Map<String, String>? headers, UDocWatermark? watermark, UPdfPageOverlayBuilder? pageOverlayBuilder, bool secure = false, List<Widget> actions = const <Widget>[], void onControllerReady(UPdfController controller)?, void onPageChanged(int pageIndex)?, void onLinkTapped(UDocLink link)?, VoidCallback? onBack, Key? key})
const

Properties

actions → List<Widget>
Action widgets/buttons.
final
allowCopy → bool
When false the text can still be highlighted but never copied or shared.
final
allowSelection → bool
Lets the user select and copy text.
final
allowShare → bool
Shows a share button.
final
annotationData → String?
Previously exported annotations (e.g. from a server); the newest of this and the local copy wins.
final
annotations → UDocAnnotationController?
Overlay highlights, notes and bookmarks. Created internally when null.
final
annotationStorageKey → String?
Saves markups under this key automatically.
final
asset → String?
Asset path.
final
base64Pdf → String?
PDF as base64 text.
final
bytes → Uint8List?
Content as bytes in memory.
final
colorMode → UDocColorMode
Normal, night, sepia…
final
controller → UPdfController?
Controller to read or change it from code.
final
direction → UDocDirection?
Layout direction.
final
drawController → UDocDrawController?
Tool/style state for drawing. Created internally when null; pass one with an active tool to open the viewer in drawing mode.
final
editController → UPdfEditController?
Writes real PDF annotations into the file (ink, shapes, stamps…).
final
enableAnnotations → bool
Shows the PDF's own annotations.
final
enableDrawing → bool
Pen, highlighter, shapes, text boxes and sticky notes drawn over the pages. They are saved in the annotation string with the highlights.
final
enableMarkup → bool
Allows highlight/underline/strike/notes.
final
filePath → String?
Local file path.
final
hashCode → int
The hash code for this object.
no setterinherited
headers → Map<String, String>?
HTTP headers for the video URL (e.g. auth).
final
initialPage → int
Page to open first (0-based).
final
key → Key?
Controls how one widget replaces another widget in the tree.
finalinherited
markupKinds → List<UDocMarkupKind>
Which markup tools are offered.
final
noteDisplay → UDocNoteDisplay
How notes appear (icon, inline, hidden).
final
onAnnotationsChanged → void Function(String data)?
Called with UDocAnnotationController.export after every change.
final
onBack → VoidCallback?
Called when the back button is pressed.
final
onControllerReady → void Function(UPdfController controller)?
Gives you the controller once the PDF is open.
final
onLinkTapped → void Function(UDocLink link)?
Called when a link is tapped (default: open it).
final
onPageChanged → void Function(int pageIndex)?
Called with the new page index.
final
pageOverlayBuilder → UPdfPageOverlayBuilder?
Draws your own widgets over each page.
final
password → String
Password of an encrypted PDF.
final
persistAnnotations → bool
Keeps markups between app launches.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
savePath → String?
Where "Save" writes the edited PDF.
final
scrollMode → UDocScrollMode
Vertical, horizontal or page-by-page.
final
secure → bool
Blocks screenshots and screen recording while the viewer is visible.
final
showBackButton → bool
Shows a back button.
final
showBottomBar → bool
Shows the page bar at the bottom.
final
showScrollThumb → bool
Shows a draggable scroll thumb with the page number.
final
showSidebar → bool
Shows the outline/thumbnail sidebar.
final
showToolbar → bool
Shows the top toolbar.
final
spread → UDocSpread
One page or two side by side.
final
textGeometry → UDocTextGeometry
How text positions are measured for selection.
final
title → String?
Title text.
final
url → String?
Web address of the content.
final
watermark → UDocWatermark?
Watermark text painted over the content.
final

Methods

alignAtBottomCenter({Key? key, double? heightFactor, double? widthFactor}) → Align

Available on Widget, provided by the WidgetsExtension extension

Aligned to the bottom center.
alignAtBottomLeft({Key? key, double? heightFactor, double? widthFactor}) → Align

Available on Widget, provided by the WidgetsExtension extension

Aligned to the bottom left.
alignAtBottomRight({Key? key, double? heightFactor, double? widthFactor}) → Align

Available on Widget, provided by the WidgetsExtension extension

Aligned to the bottom right.
alignAtCenter({Key? key, double? heightFactor, double? widthFactor}) → Align

Available on Widget, provided by the WidgetsExtension extension

Centered.
alignAtCenterLeft({Key? key, double? heightFactor, double? widthFactor}) → Align

Available on Widget, provided by the WidgetsExtension extension

Aligned to the center left.
alignAtCenterRight({Key? key, double? heightFactor, double? widthFactor}) → Align

Available on Widget, provided by the WidgetsExtension extension

Aligned to the center right.
alignAtLERP(Alignment a, Alignment b, double t, {Key? key, double? heightFactor, double? widthFactor}) → Align

Available on Widget, provided by the WidgetsExtension extension

Aligned between a and b at t (0 = a, 1 = b).
alignAtTopCenter({Key? key, double? heightFactor, double? widthFactor}) → Align

Available on Widget, provided by the WidgetsExtension extension

Aligned to the top center.
alignAtTopLeft({Key? key, double? heightFactor, double? widthFactor}) → Align

Available on Widget, provided by the WidgetsExtension extension

Aligned to the top left.
alignAtTopRight({Key? key, double? heightFactor, double? widthFactor}) → Align

Available on Widget, provided by the WidgetsExtension extension

Aligned to the top right.
alignXY(double x, double y, {Key? key, double? heightFactor, double? widthFactor}) → Align

Available on Widget, provided by the WidgetsExtension extension

Aligned at x, y from -1 to 1. child.alignXY(0, -0.5)
card({Color? backgroundColor, double? elevation, EdgeInsetsGeometry? margin}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Material Card around it. child.card(elevation: 2)
center() → Widget

Available on Widget, provided by the WidgetsExtension extension

Centered in the available space. child.center()
chip({required Color backgroundColor, double? width, double? height, Alignment? alignment, double borderWidth = 1, double radius = 12, Color borderColor = Colors.transparent, EdgeInsets padding = const EdgeInsets.symmetric(horizontal: 8, vertical: 6), EdgeInsetsGeometry? margin, BoxConstraints? constraints}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Pill-shaped colored box, e.g. for tags. Text("New").chip(backgroundColor: Colors.green.shade100)
clipCircle() → Widget

Available on Widget, provided by the WidgetsExtension extension

Clips to a circle. avatar.clipCircle()
clipRadius(double radius) → Widget

Available on Widget, provided by the WidgetsExtension extension

Rounds the corners by clipping. image.clipRadius(12)
container({double? width, double? height, Alignment? alignment, Color? backgroundColor, double borderWidth = 1, double radius = 1, Color borderColor = Colors.transparent, EdgeInsetsGeometry? padding, EdgeInsetsGeometry? margin, BoxConstraints? constraints}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Box with background, border and rounded corners. child.container(backgroundColor: Colors.white, radius: 12)
createElement() → StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() → State<UPdfViewer>
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
disabled(bool disabled, {double opacity = 0.5}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Greys out and blocks taps when disabled. form.disabled(isSaving)
expanded({int flex = 1}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Takes the remaining space in a Row/Column. child.expanded()
fadeSlideIn({int milliseconds = 1000, double offset = 24}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Fades and slides up once when first shown. card.fadeSlideIn()
fit({Alignment alignment = Alignment.center}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Shrinks to fit the space (never grows). Text(long).fit()
flexible({int flex = 1}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Can shrink in a Row/Column but does not have to fill. child.flexible()
form(GlobalKey<FormState> key) → Widget

Available on Widget, provided by the WidgetsExtension extension

Wraps in a Form with key. column.form(formKey)
hero(Object tag) → Widget

Available on Widget, provided by the WidgetsExtension extension

Hero animation between pages with the same tag. image.hero("product-$id")
ltr() → Widget

Available on Widget, provided by the WidgetsExtension extension

Forces left-to-right (numbers, phone numbers, code). Text(phone).ltr()
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onDoubleTap(GestureTapCallback? onPressed) → Widget

Available on Widget, provided by the WidgetsExtension extension

Double tap. image.onDoubleTap(like)
onLongPress(GestureTapCallback? onPressed) → Widget

Available on Widget, provided by the WidgetsExtension extension

Long press. child.onLongPress(showOptions)
onPress(VoidCallback onTap, {double pressedScale = 0.9, Duration duration = const Duration(milliseconds: 120)}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Tap with a press-down shrink animation. card.onPress(open)
onTap(GestureTapCallback? onPressed) → Widget

Available on Widget, provided by the WidgetsExtension extension

Tap without ripple. child.onTap(open)
onTapInk(GestureTapCallback? onPressed) → Widget

Available on Widget, provided by the WidgetsExtension extension

Tap with a Material ripple (needs a Material ancestor). tile.onTapInk(open)
opacity(double opacity) → Widget

Available on Widget, provided by the WidgetsExtension extension

Makes it see-through (0 = invisible, 1 = solid). child.opacity(0.5)
pAll(double padding) → Widget

Available on Widget, provided by the WidgetsExtension extension

Same padding on every side. child.pAll(16)
pLTRB(double left, double top, double right, double bottom) → Widget

Available on Widget, provided by the WidgetsExtension extension

Padding left, top, right, bottom. child.pLTRB(8, 4, 8, 4)
pOnly({double left = 0.0, double top = 0.0, double right = 0.0, double bottom = 0.0}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Padding on chosen sides. child.pOnly(top: 8)
position({double? left, double? top, double? right, double? bottom, double? width, double? height}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Positioned inside a Stack. badge.position(top: 0, right: 0)
pSymmetric({double horizontal = 0.0, double vertical = 0.0}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Horizontal and/or vertical padding. child.pSymmetric(horizontal: 16)
rotate(double scale) → Widget

Available on Widget, provided by the WidgetsExtension extension

Rotates by scale radians. arrow.rotate(pi / 2)
rtl() → Widget

Available on Widget, provided by the WidgetsExtension extension

Forces right-to-left. child.rtl()
safeArea() → Widget

Available on Widget, provided by the WidgetsExtension extension

Keeps it out of the notch and system bars. body.safeArea()
scale(double scale) → Widget

Available on Widget, provided by the WidgetsExtension extension

Scales the paint (layout size unchanged). icon.scale(1.5)
scrollable({Axis scrollDirection = Axis.vertical}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Makes it scroll when it does not fit. column.scrollable()
showMenus(List<PopupMenuEntry<int>> items) → Widget

Available on Widget, provided by the WidgetsExtension extension

Shows a popup menu where the user taps; items return their int value. child.showMenus([PopupMenuItem(value: 1, child: Text("Edit"))])
sized({double? width, double? height}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Fixed width and/or height. logo.sized(width: 48, height: 48)
skeleton(bool loading) → Widget

Available on Widget, provided by the WidgetsExtension extension

Draws a shimmering loading placeholder in its shape while loading. Text("Name").skeleton(isLoading)
sliver() → Widget

Available on Widget, provided by the WidgetsExtension extension

Lets a normal widget sit inside a CustomScrollView. header.sliver()
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
tooltip(String message) → Widget

Available on Widget, provided by the WidgetsExtension extension

Shows message on long press / mouse hover. icon.tooltip("Delete")
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
translate(Offset offset) → Widget

Available on Widget, provided by the WidgetsExtension extension

Moves the paint by offset (layout unchanged). child.translate(const Offset(0, -4))
visible(bool visible, {bool maintainSize = false}) → Widget

Available on Widget, provided by the WidgetsExtension extension

Shows it only when visible; with maintainSize it keeps its space. saveButton.visible(isDirty)

Operators

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