fabrik_layout 1.1.0 copy "fabrik_layout: ^1.1.0" to clipboard
fabrik_layout: ^1.1.0 copied to clipboard

A lightweight, opinionated layout and responsiveness foundation for Flutter applications.

fabrik_layout #

A lightweight, opinionated layout and responsiveness foundation for Flutter.

pub.dev license platform


What's included #

API What it does
FabrikLayout Root widget — classifies device, provides layout context
context.layout Ergonomic access to layout snapshot anywhere in the tree
FabrikLayoutData Immutable snapshot: type, orientation, screen size, text scaler
FabrikBreakpoints Customizable width thresholds for device classification
FabrikTextScaleConfig Optional per-device text scale floors

Installation #

dependencies:
  fabrik_layout: ^1.1.0
flutter pub get

Quick start #

1. Wrap your app once #

Place FabrikLayout inside MaterialApp.builder:

MaterialApp(
  builder: (context, child) {
    return FabrikLayout(child: child!);
  },
  home: const HomePage(),
)

2. Use layout context anywhere #

// Device classification
if (context.layout.isMobile) return const MobileView();
if (context.layout.isTablet) return const TabletView();
return const DesktopView();

// Orientation
if (context.layout.isLandscape) {
  // side-by-side layout
}

// Responsive values — mobile required, tablet/desktop fall back gracefully
final padding = context.layout.value<double>(
  mobile: 8,
  tablet: 16,
  desktop: 24,
);

Breakpoints #

Default thresholds (logical pixels):

Category Width
Mobile < 600
Tablet 600 – 1023
Desktop ≥ 1024

Override them if needed:

FabrikLayout(
  breakpoints: const FabrikBreakpoints(mobile: 480, tablet: 768),
  child: child!,
)

Text scaling #

Optional, opt-in. Applies a per-device minimum scale floor via MediaQuery — the system's accessibility scale is never reduced, only raised.

FabrikLayout(
  enableTextScaling: true,
  child: child!,
)

Override the defaults (mobile 1.0×, tablet 1.05×, desktop 1.1×):

FabrikLayout(
  enableTextScaling: true,
  textScaleConfig: const FabrikTextScaleConfig(
    mobile: 1.0,
    tablet: 1.08,
    desktop: 1.15,
  ),
  child: child!,
)

Use with theming #

fabrik_layout pairs naturally with fabrik_theme:

Text(
  'Dashboard',
  style: context.layout.isMobile
      ? context.typography.titleMedium
      : context.typography.titleLarge,
)

Layout controls structure. Theme controls appearance.


Documentation #

Full API reference and guides at fabriktool.com


Contributing #

Found a bug or have a suggestion? Open an issue or pull request on GitHub.

Maintainers #

1
likes
160
points
134
downloads

Documentation

API reference

Publisher

verified publisherfabriktool.com

Weekly Downloads

A lightweight, opinionated layout and responsiveness foundation for Flutter applications.

Homepage
Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter

More

Packages that depend on fabrik_layout