Skip to content

Choosing a package

There is no meta-package to install and no setup step to get through. Find the problem you actually have below, install that one package, and ignore the rest until you need them.

If you are…UseWhy
Wiring up colors and text styles for a new appfabrik_themeSemantic color and typography roles instead of scattered Color(0xFF…) literals
Building one UI that works on phone, tablet and desktopfabrik_layoutWidth-based breakpoints and a value() helper for per-device values
Handling text input, validation and submit statefabrik_formsForm state that lives outside your widgets, so it can be unit tested
Showing feedback after an action succeeds or failsfabrik_snackbarOverlay-based snackbars and toasts with no Scaffold requirement
Returning failures from a repository without throwingfabrik_resultEither and Option, pure Dart, no Flutter dependency
Re-writing timeAgo, debounce or snakeCase againfabrik_utilsThe helpers most apps end up hand-rolling

Nothing here depends on anything else, so the packages can be adopted one at a time and dropped just as easily.

fabrik_result pure Dart, no dependencies → usable in any Dart project
fabrik_utils Flutter + intl
fabrik_theme Flutter
fabrik_layout Flutter
fabrik_forms Flutter
fabrik_snackbar Flutter

The one relationship worth knowing: fabrik_theme decides how things look and fabrik_layout decides how they are arranged. They complement each other but neither imports the other, so using one does not commit you to the other.

Text(
'Dashboard',
style: context.layout.isMobile
? context.typography.titleMedium // fabrik_theme
: context.typography.titleLarge, // sized by fabrik_layout's category
)

Being honest about the boundaries saves you evaluating it for the wrong job:

  • Not a state management solution. fabrik_forms manages form state only. Bring Bloc, Riverpod, or setState for everything else.
  • Not a widget library. There are no buttons, cards, or dialogs. Fabrik gives you the design tokens; the widgets stay yours.
  • Not a functional programming framework. fabrik_result ships Either, Option and Unit — the parts people actually use — and deliberately stops short of typeclasses and monad transformers.
PackageVersionAPI stability
fabrik_theme1.1.0Stable
fabrik_layout1.2.0Stable
fabrik_result1.1.0Stable
fabrik_forms0.2.0Evolving — breaking changes possible before 1.0
fabrik_utils0.2.0Evolving — breaking changes possible before 1.0
fabrik_snackbar0.1.8Evolving — breaking changes possible before 1.0

Packages at 1.x follow semantic versioning. Packages below 1.0 may change their APIs in a minor release; each change is documented in that package’s changelog with a migration note.