safaeh library

Opt-in Safaeh presentation helpers for the settings framework.

The main package entrypoint intentionally does not export this library. Import it only when the host app wants to use Safaeh's page-index chrome:

import 'package:flutter_settings_framework/safaeh.dart';

Classes

SafaehFloatingAppearance
Shared appearance options for Safaeh floating surfaces.
SafaehPageIndex
GitBook-style "On this page" index for wide layouts (side rail).
SafaehPageIndexEntry
One jump target in a long scrolling page.
SafaehPageIndexOverlay
Floating overlay control for narrow layouts. Does not consume scroll space.
SafaehSettingsPageIndex
Safaeh's wide-layout page index backed by Edadat sections.
SafaehSettingsPageIndexOverlay
Safaeh's narrow-layout page-index overlay backed by Edadat sections.
SafaehSettingsSearchButton
Search trigger for a Safaeh-backed settings search overlay.
SafaehSettingsSearchOverlay
Animated, glass-surface settings search overlay for a page Stack.
SafaehSettingsSearchResults
A compact, grouped result list for SafaehSettingsSearchOverlay.
SafaehTheme
Provides SafaehThemeData to sheets, page index, and sidenav.
SafaehThemeData
Tokens for safaeh chrome. Override via SafaehTheme at the app root.

Enums

SafaehFloatingSurfaceStyle
Visual treatment used by floating and overlay surfaces.

Functions

activeSafaehSettingsSectionId({required Iterable<SettingSection> sections, required Map<String, GlobalKey<State<StatefulWidget>>> sectionKeys, required BuildContext scrollContext, double activationOffset = 96}) String?
Resolves the active Edadat section using Safaeh's scroll spy.
safaehActivePageSectionId({required List<(String, GlobalKey<State<StatefulWidget>>)> sections, required BuildContext scrollContext, double activationOffset = 96}) String?
Resolve the active section from scroll position (section tops vs viewport).
safaehSettingsPageIndexEntries({required Iterable<SettingSection> sections, required Map<String, GlobalKey<State<StatefulWidget>>> sectionKeys, required String labelBuilder(SettingSection section)}) List<SafaehPageIndexEntry>
Converts Edadat sections into Safaeh page-index entries.
scrollToPageSection(GlobalKey<State<StatefulWidget>> key, {double alignment = 0.08, ScrollController? controller, double? knownOffset, Duration ensureDuration = const Duration(milliseconds: 280)}) Future<void>
Scroll helper: jump to a section key inside one scrollable.