oh_my_flutter 0.21.0
oh_my_flutter: ^0.21.0 copied to clipboard
Empower Flutter with utilities that make development 10x faster.
0.21.0 #
- Breaking: Morph now uses stable
MorphTargetinstances and aMorphNavigatorObserveron each owning Navigator. Replacetagon Morph and MorphSibling withtarget; use separate targets with equal tags for each appearance and share the exact target with its siblings. Mounting and removal automatically transfer the shared visual, including returns and interrupted transitions. Sibling progress follows its appearance in both directions and stays visible during child-only replacement. Child updates are now immediate by default; setanimateChildChanges: trueto enable in-place child-replacement flights. Move flight configuration toflightConfig: MorphFlightConfig.auto(...)or.custom(delegate); usechildSwitchAtandchildTransitionfor automatic content changes. Custom flights exposecurvedAnimationanduncurvedAnimation; rename delegatelerptolerpProperties, register endpoint content withendpoint.registerDescendantWidget(...), and build the returned widget. Snapshot content remains available during keyed endpoint replacement, including in custom crossfades. Independently timed returns stay visually settled above a closing modal barrier until it disappears, avoiding a brief color flash at landing. Sibling builders receive child, curved, and uncurved animations. RenameMorphSibling.paintAboveMorphtopaintOnTop. - Add
SafeAreaObserverandSafeAreaObserverHandleto measure local unsafe edge overlap and observe changes without moving or padding content.
0.20.0 #
- Add
MaybeSafeAreaHandleto read corrected bounds and observe changes, including adjustments caused by moving ancestors. - Breaking: Make an explicit or inherited
Morph.durationcontrol route flights, allowing shared visuals to finish before or after page transitions while fully omitted route durations continue following the route animation. - Add
Countryfor country and territory identifiers, including established ISO extensions, primary calling codes, strict or nullable lookups, and offline localized display names with broad locale support. - Keep
MaybeSafeAreacontent correctly positioned and clipped in offscreen snapshots, including Morph transitions.
0.19.0 #
- Breaking: Replace
Telephonywith a validatedPhoneNumbervalue that provides display and canonical E.164 forms and calls its constructor number. - Breaking: Reshape
Whatsappinto a validated recipient value that owns a phone number or username, formats it for display, and opens chats throughchatinstead oflaunchChat. - Add
StringExtension.isDigitsOnlyfor identifying non-empty strings that contain only ASCII digits. - Breaking: Remove the
estimateoption fromDeviceDisplay.cornerRadii(). Display corners now come only from Flutter, Android platform information, or public iOS 26 UIKit information and return null when trustworthy values are unavailable. - Add
DoubleExtension.isPositiveFinitefor identifying finitedoublevalues that are strictly greater than zero.
0.18.0 #
- Add
NativeSelectableTextfor selectable plain or styled Flutter text with native selection menus on Android, iOS, macOS, Windows, and Linux, plus an adaptive Flutter fallback when native presentation is unavailable.
0.17.0 #
- Add
ScaleOutMotionEffectfor scaling widgets and text from their normal size to a configurable final scale with standard Motion timing, playback, and lifecycle controls.
0.16.0 #
- Add
InteractiveSwipeDismissfor translating any live content with a configurable, scroll-aware directional dismissal gesture, callback-owned removal, and presentation-neutral drag-handle regions. - Breaking: Replace
MorphForegroundwith taggedMorphSiblingcontrols that coordinate widgets outside a Morph subtree through matching visual progress, rebuild-stable custom transitions, and configurable above-Morph paint ordering. - Keep watched Morph destination snapshots aligned with geometry and content changes during active forward and reverse flights while reusing unchanged images whenever changes are directly observable.
- Keep retained Morph text and Column layout aligned with the paragraph's actual wrapping when a flight reverses before settling.
- Prevent translucent Morph content from darkening while completed flights hand off to their live endpoints.
- Add
Devicefor grouping device features andDeviceDisplayfor reading exact display corner radii with an optional approximate phone fallback.
0.15.0 #
- Add device-formatted current addresses with selectable nullable components,
retained coordinates, an optional best-effort locale, and a bounded
reverse-geocoding wait, while keeping
DeviceLocationimplementable for consumer test doubles.
0.14.0 #
- Breaking: Make
Skeletonrepresent the first visibly painted descendant on each branch as one bone, and add nestedSkeletonDescendantbehaviors for painting a branch root, deferring to its children, or hiding it while retaining layout.
0.13.0 #
- Breaking: Rename
ControlledVisibilityControllertoVisibilityController. - Add a generic callable
Debouncer<T>for delaying repeated synchronous or asynchronous callbacks, sharing the latest pending result, discarding superseded running results by default, and explicitly cancelling or disposing active results.
0.12.0 #
- Add
Skeletonfor turning existing widget layouts into neutral loading placeholders with optional fade and shimmer effects, configurable rectangular radius and effect timing, and a localized live loading-status label. - Keep multiline
Morphtext fully visible and followingColumncontent correctly positioned and spaced while typography grows or shrinks, with children corresponding by position regardless of their Flutter keys. - Prevent shrinking reverse
Morphtransitions from leaving duplicated text from earlier frames.
0.11.1 #
- Add
DeviceLocationfor managing foreground permission and settings and retrieving fresh Android or iOS coordinates. This release requires Flutter 3.47 and Dart 3.13.
0.11.0 #
- This version was tagged but not published.
0.10.0 #
- Preserve visual continuity when
Morphtransitions overlap or hand their completed flight to a live endpoint, including route reversals and retargets. - Add configurable live or preserved
MaybeSafeAreapositioning so controls can either track unsafe edges while moving or retain their initial correction within a moving surface.
0.9.0 #
- Add
MorphForegroundfor keeping live controls and other content visible above nearby Morph transitions without joining their animation.
0.8.2 #
- Keep
RouteSettledcontent hidden while another route covers it, then replay its configured show behavior after that route fully leaves.
0.8.1 #
- Make the repository's consumer guides easier to discover from the README, alongside the generated API reference and runnable example.
0.8.0 #
- Add
MaybeSafeAreato keep a child's layout bounds out of enabled unsafe view edges as it moves or scrolls, without changing layout or delaying its first rendered frame.
0.7.1 #
- Fix nested Morphs without a matching endpoint in the current transition so they remain visible as ordinary content inside their ancestor's flight.
0.7.0 #
- Breaking: Extend automatic Morph transitions with
MorphDescendantconfiguration for how selected subtrees participate in their nearest Morph, including live, snapshotted, or hidden flight behavior; optional transitions for discrete content switches; destination tracking configured by the departing Morph; and specialized transitions through eligibleMotionwrappers. RenameMorph.watchtowatchDestinationandnonMorphDescendantsTransitiontoswitchTransition.
0.6.1 #
- Add
Morphshared-element transitions for any widget across routes or within the same screen. EligibleText,Container,DecoratedBox, and verticalColumnpairs receive specialized transitions automatically, while other pairs use the generic content switch. Nested Morphs inherit an omitted duration or curve from their nearest Morph ancestor. Custom typed flight delegates remain available when needed. - Reorganize package documentation into focused consumer guides for widgets, extensions, networking, and utilities, with a compact README catalog that links to each documentation section.
- Add configurable
MotionStartupbehavior andMotionControllerplayback forMotionandTextMotion, including automatic playback, a held starting state, or a skipped ending state with controller-driven playback on demand. - Add
ShakeMotionEffectfor damped horizontal, vertical, or diagonal shakes with configurable strength, excursion count, timing, and playback. - Add
MotionEffectBoundsfor declaring translation and scale ranges for custom effects with oscillating, abrupt, or short-lived visual extremes.
0.5.0 #
- Breaking: Replace
MotionEffect.buildTransitionwithMotionEffect.apply. Custom effects now useMotionEffectTransformto compose opacity, translation, and uniform scale. The same custom effect can be used by bothMotionandTextMotion. - Add
TextMotionandTextMotion.listfor applying existing motion effects to the visible Unicode graphemes in plain Flutter text, with configurable staggering and effect lifecycle callbacks for the complete text. - Add
Marqueefor continuously moving an ordered widget strip in any physical direction, with bounded or explicit viewport sizing, configurable loop duration and spacing, continuous repetition throughinfinity, reduced-motion handling, and opt-in interaction.
0.4.1 #
- Add effect-level
onStartandonEndlifecycle callbacks toMotionEffect, withonStarton every built-in effect andonEndon one-shot effects. - Keep
Motioninteraction disabled during effect delays wheninteractiveis false. - Add
MotionPlayback.isOncefor semantic playback branching.
0.4.0 #
- Add extensible single- and multi-effect
Motioncomposition with one-shot and looping playback, including independent per-effect startup delays, the built-inFadeInMotionEffect,ScaleInMotionEffect, paint-onlyMoveMotionEffectandFloatingMotionEffect, reduced-motion handling, a shared frame scheduler, optional interaction blocking during playback and render-layer transforms. - Add
PauseAnimationsfor muting subtree ticker callbacks either explicitly or for a fixed duration. - Add controller-driven
Sequencefor displaying ordered widgets one at a time, with indexed navigation, optional directional transitions, and configurable child-state retention. Its lazy entry lifecycle limits mounted and animated work to participating children by default, while configurable alignment anchors differently sized transition participants.
0.3.2 #
- Remove the root package lockfile from version control.
0.3.1 #
- Align the package's explicit formatter settings with
panaso local and publication analysis both pass at the configured 120-column width.
0.3.0 #
- Add controller-driven
ControlledVisibilitywith independent caller-owned show and hide transitions, configurable timing, reduced-motion handling, and mounted or unmounted hidden-state behavior. - Add
RouteSettledfor showing route content only after navigation motion and user gestures finish, with optional direction-specific transitions. - Improve pubspec description.
0.2.0 #
- Breaking: Remove
StringExtension.hexToColor(). Use FlutterColorconstructors or an application-owned parser for string input. - Improve the README, example, and public API documentation.
- Add trusted pub.dev publishing through GitHub Actions.
- Use the canonical Ventairy repository links in package metadata.
0.1.0 #
- Initial public release.
- Add deterministic relative-time formatting with configurable fallback behavior.
- Add color, OKLCH, string, object, and gesture velocity extensions.
- Add offline Dio interception and a typed offline connection exception.
- Add portable telephony and WhatsApp URI helpers.