DynShift

Packages

Smaller pieces for Flutter, each written to remove one recurring annoyance from app work and published on pub.dev under the MIT licence.

None of them is a framework. Each does one thing, has a README that shows the whole API, and can be dropped without leaving anything behind. The source for all four is on GitHub.

mokr

1.0.0 · April 2026 · MIT · pub.dev · source

The problem

Building a feed, a profile or a list screen means looking at it full of something before the real data exists. Lorem ipsum and a grey box tell you nothing about how the layout behaves with a long name, a tall photo or an empty caption.

What it does

Realistic mock users, posts and images for Flutter UI work, generated from a seed so the same screen shows the same data on every run and on every developer's machine. Everything is synchronous: no await, no FutureBuilder in the widget tree. Image aspect ratios are known before the image loads, so nothing jumps.

State

Development only, by design. It refuses to run in a release build, so mock data cannot ship by accident.

flutter_ui_scaler

0.1.2 · September 2025 · MIT · pub.dev · source

The problem

A design is drawn on one frame, usually a portrait phone. Flutter's MediaQuery does not scale it to other devices in a design-accurate way, and in landscape the naive approach makes titles enormous and spacing inconsistent.

What it does

Orientation-aware scaling from a design frame to the device: sx and sy for padding, radii and sizes, sp for text, with clamps so nothing grows or shrinks absurdly. A UiScaleScope at the root sets the frame once, and an optional CLI writes shared defaults to a file so a team scales the same way.

State

The recommended one of the two scaling packages. It succeeds figma_design_scale and is where improvements go.

figma_design_scale

0.1.1 · October 2025 · MIT · pub.dev · source

The problem

The same problem as flutter_ui_scaler: keeping a Figma frame's proportions and type sizes stable across devices and rotations.

What it does

The original, smaller take on it. Maps the device's shortest side to the design width and its longest side to the design height, takes the smaller of the two ratios so squat screens do not over-expand, and treats fonts gently in portrait and strictly in landscape.

State

Maintained but superseded. Its own README points at flutter_ui_scaler; new projects should start there.

skip_ink_underline

1.0.0 · September 2025 · MIT · pub.dev · source

The problem

A browser draws an underline that steps over descenders, the tails of g, j, p, q and y, because CSS text-decoration-skip-ink does it. Flutter's underline runs straight through them, which looks cheap next to the rest of a carefully typeset screen.

What it does

A drop-in SkipInkText widget that takes the same style as Text and draws an underline that breaks around descenders. The defaults are tuned to look right without configuration; distance, thickness, the gap around each descender and per-letter skip ratios can all be set when they need to be.

State

Stable. Works on every Flutter platform.