IconInboxRiffle class

A realistic two-sheet riffle for a stacked-tray glyph (e.g. inbox-04): the BACK sheet and FRONT sheet deal out and return in a nested ping-pong — the back leaves first and returns last, the front nested inside (back-out → front-out → front-in → back-in) — while every moving sheet is occluded by whatever sits in front of it. Each sheet is masked OUTSIDE the silhouettes of the sheets/tray drawn after it, so the back sheet truly slides BEHIND the stack (sinking behind the front sheet + the planted tray, then rising back up from below into its slot) instead of floating over it.

Z-order is the glyph's own contour ranking, top→bottom by centroid y: the top-most contour is the BACK sheet, the next is the FRONT sheet, and the bottom holdTray contour(s) are the planted tray (drawn last, never move, mask both sheets). It rests as the settled glyph (restValue 0 → seamless cycle, reduced-motion shows the plain icon).

Cost is a couple of Path.combines + a clipPath per moving sheet per frame (only while the tap animation runs) — the "mask outside" the realism needs, kept cheap by masking against cached silhouettes, not a saveLayer.

Every timing/offset is a knob — each nav glyph is special and tuned on its own.

Inheritance

Constructors

IconInboxRiffle({Duration duration = IconMotion.iconPress, double drop = 6, double rise = 7, int holdTray = 1, double backOutEnd = 0.30, double frontOutStart = 0.22, double frontOutEnd = 0.52, double frontInEnd = 0.80, double backInStart = 0.72})
const

Properties

autoReverse bool
no setterinherited
backInStart double
final
backOutEnd double
final
drop double
How far (viewBox px) a sheet sinks DOWN as it deals out.
final
duration Duration
Play time for one cycle. The widget sizes its controller to this.
final
frontInEnd double
final
frontOutEnd double
final
frontOutStart double
final
hashCode int
The hash code for this object.
no setterinherited
holdTray int
How many BOTTOM-most contours (by centroid y) are the planted tray — drawn once, never moved, and used as a front occluder. 1 for inbox-04.
final
loops bool
When true the controller AnimationController.repeats (pair with autoReverse for a ping-pong such as a breathe).
no setterinherited
restValue double
The progress value to show at rest — when autoplay is off, before the first play, and (crucially) under reduced-motion, which renders this single settled frame instead of animating. e.g. 1.0 for a draw-on that should rest fully drawn, 0.0 for a spin that rests front-facing.
no setteroverride
rise double
How far (viewBox px) BELOW its slot a returning sheet starts before rising back up into place (the "from bottom to top" re-entry).
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
paint(Canvas canvas, Size size, IconGeometry geom, double t, Paint paint) → void
Paint one frame. size is the icon's viewBox space; t is raw 0..1.
override
toString() String
A string representation of this object.
inherited

Operators

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