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
-
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- UPdfViewer
- 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 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
-
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 betweenaandbatt(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 whendisabled.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 withkey.column.form(formKey) -
hero(
Object tag) → Widget -
Available on Widget, provided by the WidgetsExtension extension
Hero animation between pages with the sametag.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 byscaleradians.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< items) → Widgetint> > -
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 whileloading.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
Showsmessageon 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 byoffset(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 whenvisible; withmaintainSizeit keeps its space.saveButton.visible(isDirty)
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited