u 3.1.0
u: ^3.1.0 copied to clipboard
The only package you need, a complete set of packages and utilities you need in every single project.
3.1.0 #
-
Drawing on PDFs, EPUBs and videos. New
UDocShapeLayer/UDocDrawToolbar/UDocDrawController: pen, highlighter pen, area highlight (manual highlighting anywhere), line, arrow, double arrow, rectangle, rounded rectangle, ellipse/circle — each with no fill, light fill, solid fill or white "cover" fill — text boxes typed directly on the page, and sticky notes. Colour, thickness, opacity, dashes, bold and font size; Shift / "Keep proportions" for squares, circles and 45° lines. Select to move, drag the corner to resize, recolour, fill or delete; eraser; undo/redo (a drag is one undo step); Delete, Esc and Ctrl/Cmd+D shortcuts. -
Drawings are saved in the same annotation string as highlights and bookmarks (
UDocAnnotationController.export()→"shapes",UMediaNotesController.export()→"shapes"), so storing that one string (e.g. in SharedPreferences viaULocalStorage) and passing it back restores everything. Geometry is normalised, so drawings stay in place at any zoom or window size. -
UPdfViewer: ✎ button in the toolbar (enableDrawing,drawController; pass a controller with an active tool to open in drawing mode). While drawing, one-finger drags draw and the wheel, trackpad and scroll thumb still scroll. The file-writing editor tools (enableAnnotations: true,UPdfEditorPage) are unchanged. -
UEpubReader: the same tools per paragraph (anchored to the paragraph, width-normalised, and kept in place when a paragraph is split across pages); drawing never starts a text selection. -
UVideo/UVideoWithNotes: ✎ in the player pauses and draws on the frame (letterboxing excluded). Each drawing shows for a chosen time (2 s, 5 s, 10 s, 30 s or until the end) and appears on the seek bar. -
Viewer hotkeys (space, arrows…) no longer fire while typing in a text box.
-
Document annotations (PDF & EPUB). New shared
UDocAnnotationControllerwith highlight, underline, strike-through, squiggly, border and note markups, page/position bookmarks, undo/redo, local persistence,export()/import()(base64 JSON for server sync, newest-wins merge) and import of the legacy SinApp{"markers":…,"pageMarks":…}format. ReusableUDocAnnotationsPanel,UDocBookmarksPanel,UDocSelectionMenu,UDocMarkupMenu,UDocNoteEditor,UDocWatermark,USecureArea. -
Fix: Persian/Arabic PDF highlighting. Text runs are rebuilt with per-character rectangles and proper visual→logical bidi reordering (numbers, Latin inside RTL, ZWNJ, diacritics),
/ActualTextis honoured, and runs whose glyph metrics look wrong fall back to whole-line boxes (pdfrx approach).UDocTextGeometry.auto | precise | boxis selectable in the viewer settings. -
UPdfViewer: sidebar (thumbnails, outline, notes, bookmarks, search with snippets), selection with mouse/touch/keyboard (double/triple click), two-page & cover spreads, smooth pinch/trackpad/ ctrl-scroll zoom, scroll thumb, page indicator,allowCopy,secure, watermark,pageOverlayBuilder, keyboard shortcuts, legacy-annotation placement. -
UEpubReader: the same markup tools on reflowable text (anchored to block + offsets, survive re-flow and paged mode), grouped multi-paragraph selections, position bookmarks, block-level search, exact jump to TOC/footnote anchors, span-preserving pagination, full typography settings, image zoom, time-left estimate. Fixes: tap-to-toggle never fired underSelectionArea, dark-theme text. -
Video:
UMediaNotesController+UMediaNotesPanel(timestamp notes, seek-bar markers, overlays, SRT/Markdown export, legacy import),UVideoWithNotes, resume position, ±seek buttons, quick speed menu and fine speed slider, desktop hover/volume slider/scroll-wheel volume, mouse double-click fullscreen,UMovingWatermark,secure, Android auto picture-in-picture + PiP state events, iOS PiP that waits until possible, hls.js on web browsers without native HLS. -
Graceful errors when a platform has no media backend; replay after completion.
-
Fixes after QA: PDF selection/markup boxes floated above the text (Chrome/Skia writes a positive font Descent — metrics are now sanitised; older saved markups are re-placed automatically, guarded by a pixel-coverage test); EPUB crash "SelectionListenerNotifier is already registered" when a paragraph got its first markup; EPUB markups drawn at the wrong x on short/list paragraphs and spilling into margins (painter now uses the paragraph's real width and one trimmed box per line); EPUB menu buttons lost the selection on web/desktop; debug assertions from ListTiles on coloured sidebars; page counters in RTL; mouse drag selection starting late; search snippet highlight offset.
-
Audio player: ±seek buttons, timestamp notes with seek-bar markers, resume position, fine speed.
3.0.0 #
-
new
dart run u:appCLI to change the host app's native settings on Android, iOS, macOS, Linux, Windows and web from one command:name,id(movesMainActivityto the new package),min-sdk,target-sdk,compile-sdk,ndk,java,version,bump,description,permission add/remove/list(32 friendly names such ascamera/location/internet, mapped to manifest entries, Info.plist usage strings, background modes and macOS entitlements),orientation,deep-link,team,binary,company,copyright,web-color, Android releasesigning, plusinfoanddoctor. Supports--platformsand--dry-run, keeps file formatting, and is idempotent. -
Fix: signing out no longer deletes the user's files on desktop.
UFileStorageusedgetApplicationDocumentsDirectory(), which is the user's own~/Documentson Windows, Linux and unsandboxed macOS, andclear()(called byUAuth.signOut) deleted every.txtfile there. Storage now lives in the app's private support/cache directories; existing data is migrated once. -
new
UDownloadManagerreplacingUDownloadand the media-only download manager: silent fetches, a persistent queue, segmented multi-connection downloads with dynamic re-splitting, safe resume (If-Range), pause/resume across restarts, priorities, per-host limits, speed limits, wifi-only, scheduling, mirrors, checksums,sourceIddownloads whose URL is never stored, and hand-off to the OS (Android DownloadManager, Apple background URLSession, Windows BITS). -
destinations: memory, private storage, cache, the encrypted vault (encrypted while downloading), the user's Downloads (MediaStore on Android, Files app on iOS, the browser on web), a path, or "save as".
-
UFileStoragerewritten:support/cache(LRU, size cap) /vault(streaming ChaCha20-Poly1305 or WebCrypto AES-GCM with per-file keys) /tempbuckets, hashed file names, atomic writes, expiry, MIME types, checksums, ranged streaming reads, and IndexedDB on the web. -
new native
u/fileschannel on all platforms: free space, save-as dialogs, open / reveal, keep-awake (Android dataSync foreground service with progress), key-store secrets. -
new widgets:
UDownloadManagerPage,UDownloadTile,USegmentProgressBar,UDownloadButton,UAddDownloadSheet,UDownloadSettingsSheet. -
new
UHasher(streaming MD5 / SHA-1 / SHA-256) andUChaCha20Poly1305. -
breaking:
UFileStorage.getBytesSync,getDatKeysandgetDatPathswere removed; the other 2.x names remain as deprecated aliases.UDownloadis a deprecated wrapper overUDownloadManager.
2.0.4 #
- added AR and 3D with no pub packages: ARCore + a built-in OpenGL ES 3 glTF renderer (Android), ARKit + RealityKit (iOS), WebXR + a built-in WebGL2 renderer (web).
UArController/UArView: surfaces (floor, table, wall, ceiling), hit testing, anchors, nodes (glTF / USDZ models, primitives, images, videos, Flutter widgets), animations, depth and people occlusion, light estimation, image / object / face / body tracking, Geospatial and GPS + compass anchors, Cloud Anchors, world maps, collaboration, snapshots, recording, OCR and code detection.- ready-made widgets:
UArScene,U3DViewer,UArGeoView,UArMeasure,UArFaceTryOn,UArImageTrigger,UArCodeView,UArOverlayLayer,UArGateandUArExperiences. UAr.scanRoom(RoomPlan),UAr.captureObject(Object Capture),UAr.openNativeViewer(Scene Viewer / AR Quick Look).
2.0.3 #
- added
UJalaliDatePickerwith three flavours:classic(the originalJalaliDatePickerDialog),material(a Jalali clone of Flutter's own Material date picker, with month paging, year grid and keyboard entry) andspinner(an iOS style three wheel picker as a bottom sheet or dialog). UTextFieldDatePickergainedjalaliType,spinnerAsDialogandhelpText;jalali: truenow opens the material flavour by default.JalaliFormatternow exposes its month and weekday name tables, plus Latin variants.
2.0.2 #
- added example project
2.0.1 #
- converted the package to Plugin to be able to provide native codes
0.1.0 #
- First release as the
uplugin (successor to theUtilities-flutterpackage), adding native platform code alongside the Dart toolkit. - ScreenGuard: native screenshot / screen-recording prevention on Android, iOS, macOS and
Windows (safe no-op on Linux and web), with
onScreenshot/onScreenRecordingcallbacks. - Established the
lib/plugins/<feature>/+ per-platform handler convention for native features. - Full multi-page example gallery and a complete README covering every capability area.