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)
| Strategy | Package | Source roots |
|---|---|---|
| scaled (+ common/core) | appdimens_flutter | packages/appdimens_flutter/lib/src/{common,core,scaled,flutter} |
| (BOM) | appdimens_bom | packages/appdimens_bom/lib/appdimens_bom.dart |
| auto | appdimens_auto | packages/appdimens_auto/lib/src/ |
| density | appdimens_density | packages/appdimens_density/lib/src/ |
| diagonal | appdimens_diagonal | packages/appdimens_diagonal/lib/src/ |
| fill | appdimens_fill | packages/appdimens_fill/lib/src/ |
| fit | appdimens_fit | packages/appdimens_fit/lib/src/ |
| fluid | appdimens_fluid | packages/appdimens_fluid/lib/src/ |
| interpolated | appdimens_interpolated | packages/appdimens_interpolated/lib/src/ |
| logarithmic | appdimens_logarithmic | packages/appdimens_logarithmic/lib/src/ |
| percent | appdimens_percent | packages/appdimens_percent/lib/src/ |
| perimeter | appdimens_perimeter | packages/appdimens_perimeter/lib/src/ |
| power | appdimens_power | packages/appdimens_power/lib/src/ |
| resize | appdimens_resize | packages/appdimens_resize/lib/src/ |
| units (physical) | appdimens_units | packages/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;AppDimensScopefast-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/DimenSspfacades + explicit-context extensions),dimen_scaled_builder.dart(DimenScaled/ScaledSpchains).lib/src/flutter/—AppDimensApp(observer-based root publisher),AppDimensScopeBinder(MediaQuery-driven in-tree publisher forMaterialApp.builder),AppDimensProvider(InheritedWidget snapshot),publishAppDimensContext.lib/src/internals/strategy_resolution.dart— shared grammar used by satellites:StrategyFormula,StrategyResolution,StrategyBranching, genericStrategyChainbuilder.
Satellite packages follow the same shape: <strategy>_engine.dart (formula + memoized default path + facade) and <strategy>_extensions.dart (stems × grammar).
Resolution modes
| Mode | Entry points | Notes |
|---|---|---|
| Fast lane | 16.sdp, 50.psdp, … | static slot read + multiply; needs a published scope |
| Explicit context | 16.sdpOf(ctx), 16.toDynamicScaledDp/Px(ctx, q, …), DimenSdp.sdp(ctx, v) | deterministic 300×533 fallback without provider; ideal for tests/isolates |
| Builders | 100.scaledDp.screen(...).sdp / .resolve(context); Dimen<Strategy>.scaled(v) → StrategyChain | priority: ui+qualifier → ui → qualifier → orientation |
Strategy → documentation file
| Package suffix | Doc |
|---|---|
| scaled | DOCUMENTATION/scaled.md |
| percent | DOCUMENTATION/percent.md |
| power | DOCUMENTATION/power.md |
| fluid | DOCUMENTATION/fluid.md |
| auto | DOCUMENTATION/auto.md |
| diagonal | DOCUMENTATION/diagonal.md |
| fill | DOCUMENTATION/fill.md |
| fit | DOCUMENTATION/fit.md |
| interpolated | DOCUMENTATION/interpolated.md |
| logarithmic | DOCUMENTATION/logarithmic.md |
| perimeter | DOCUMENTATION/perimeter.md |
| density | DOCUMENTATION/density.md |
| resize | DOCUMENTATION/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:
- Sample — main.dart (demo sections) · demo_routing.dart (12-strategy dispatch) · benchmark_screen.dart (calc/micro/macro/compare dashboard)
- BenchLab — main.dart · benchmark_runner.dart (UI probe, isolate probe, legacy passes) · engine audit test
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.