Highlights
- One route is a phone sheet and a tablet dialog, and it morphs at the breakpoint
- Pickers, confirm, and text input — every label stays in the host app
- Sidenav, floating nav, page index, and a content band
- Camera / QR chrome only; the scanner plugin stays in the app
About
Flutter apps accumulate one-off bottom sheets, dialogs, rails, and camera overlays. Safaeh is the chrome layer: the same route is a phone sheet and a tablet dialog, motion honors reduced-animation settings, and i18n, routing, and the camera plugin stay in the host. Used in Hisab.
Install
flutter pub add safaeh
What you get
- Sheets —
showSafaehmorphs phone sheet ↔ tablet dialog. Card and tile pickers, multi-select, confirm, and text input ship with the same shell. - Shell — sidenav (drawer or rail), floating nav, page index, and a content band that hides its aside when the viewport is narrow.
- Camera / QR — compact ↔ full camera sheet and QR overlay chrome. Preview
and decode stay in the host (
mobile_scanneris not a package dependency). - Theme — breakpoint, motion, radius, and rail widths through
SafaehTheme.
Try the catalog in the browser: zyzto.github.io/Safaeh.
License
MPL-2.0, published on pub.dev. Modified package files stay open; the host app can remain closed-source.