AppDimens Flutter

August 22, 2026 · View on GitHub

Doc base (Git ref main): https://github.com/bodenberg/appdimens-flutter/blob/main/

Read this file when you need package locations, resolution-mode symmetry, or core types.


Pub workspace packages (3.2.0)

StrategyPackageSource roots
scaled (+ common/core)appdimens_flutterpackages/appdimens_flutter/lib/src/{common,core,scaled,flutter}
(BOM)appdimens_bompackages/appdimens_bom/lib/appdimens_bom.dart
autoappdimens_autopackages/appdimens_auto/lib/src/
densityappdimens_densitypackages/appdimens_density/lib/src/
diagonalappdimens_diagonalpackages/appdimens_diagonal/lib/src/
fillappdimens_fillpackages/appdimens_fill/lib/src/
fitappdimens_fitpackages/appdimens_fit/lib/src/
fluidappdimens_fluidpackages/appdimens_fluid/lib/src/
interpolatedappdimens_interpolatedpackages/appdimens_interpolated/lib/src/
logarithmicappdimens_logarithmicpackages/appdimens_logarithmic/lib/src/
percentappdimens_percentpackages/appdimens_percent/lib/src/
perimeterappdimens_perimeterpackages/appdimens_perimeter/lib/src/
powerappdimens_powerpackages/appdimens_power/lib/src/
resizeappdimens_resizepackages/appdimens_resize/lib/src/
units (physical)appdimens_unitspackages/appdimens_units/lib/src/

Full graph: DOCUMENTATION/MODULES.md. Satellites depend only on appdimens_flutter. appdimens_bom re-exports everything at one version. Satellite extension files are generated from scripts/generate_satellites.py — edit the generator, not the generated stems.

Source layout (packages/appdimens_flutter)

  • lib/src/common/ — shared enums/value types: DpQualifier (smallWidth, height, width), Inverter (8 mappings + standard), DimensOrientation, UiModeType (incl. fold states), UnitType.
  • lib/src/core/ — cross-cutting engine: ScreenConfiguration (immutable window config), DimenMetrics (per-window snapshot with eagerly precomputed factors: scale, width/height factors, AR multipliers, lazy satellite scales), DimenCache (snapshot-partitioned cache, max 4×512 entries, bypass rules identical to the Kotlin engine; AppDimensScope fast-lane slot; no persistence), DimenCalculationPlumbing (inverter resolution, axis reads, multi-window heuristic), DimenScaledEngine (scaled kernels incl. sp semantics), DesignScaleConstants, resize math (ResizeMath, ResizeBound, AutoResizePercentBasis, ResizeRangePx).
  • lib/src/scaled/ — Scaled family: dimen_sdp_extensions.dart (num.sdp/hdp/wdp × suffixes/inverters/Px + facilitators + Plain pairs), dimen_ssp_extensions.dart (ssp/hsp/wsp + sem/hem/wem), dimen_sdp_facade.dart (DimenSdp/DimenSsp facades + explicit-context extensions), dimen_scaled_builder.dart (DimenScaled / ScaledSp chains).
  • lib/src/flutter/AppDimensApp (observer-based root publisher), AppDimensScopeBinder (MediaQuery-driven in-tree publisher for MaterialApp.builder), AppDimensProvider (InheritedWidget snapshot), publishAppDimensContext.
  • lib/src/internals/strategy_resolution.dart — shared grammar used by satellites: StrategyFormula, StrategyResolution, StrategyBranching, generic StrategyChain builder.

Satellite packages follow the same shape: <strategy>_engine.dart (formula + memoized default path + facade) and <strategy>_extensions.dart (stems × grammar).

Resolution modes

ModeEntry pointsNotes
Fast lane16.sdp, 50.psdp, …static slot read + multiply; needs a published scope
Explicit context16.sdpOf(ctx), 16.toDynamicScaledDp/Px(ctx, q, …), DimenSdp.sdp(ctx, v)deterministic 300×533 fallback without provider; ideal for tests/isolates
Builders100.scaledDp.screen(...).sdp / .resolve(context); Dimen<Strategy>.scaled(v)StrategyChainpriority: ui+qualifier → ui → qualifier → orientation

Strategy → documentation file

Package suffixDoc
scaledDOCUMENTATION/scaled.md
percentDOCUMENTATION/percent.md
powerDOCUMENTATION/power.md
fluidDOCUMENTATION/fluid.md
autoDOCUMENTATION/auto.md
diagonalDOCUMENTATION/diagonal.md
fillDOCUMENTATION/fill.md
fitDOCUMENTATION/fit.md
interpolatedDOCUMENTATION/interpolated.md
logarithmicDOCUMENTATION/logarithmic.md
perimeterDOCUMENTATION/perimeter.md
densityDOCUMENTATION/density.md
resizeDOCUMENTATION/resize.md
units (physical)DOCUMENTATION/physical-units.md

Formal docs: MATHEMATICS-AND-CALCULUS.md · API-CONVENTIONS.md Performance: PERFORMANCE.md · PERFORMANCE-COMPARATIVE.md


Apps (not published to pub.dev)

Use for pattern reference:


Internal CalcType

Debug/cache tagging only — end users think in strategy names. Values: auto, diagonal, fill, fit, fluid, interpolated, logarithmic, percent, perimeter, power, resize, scaled, unities, aspectRatio, density. Source: dimen_cache.dart


What this file intentionally omits

ignoreMultiWindows, *i, and *ia suffix workflows — omitted from the interactive guidance.