arch-atlas

Arc Search Menu

presentation/widgets/curved_icon_menu.dart

presentation

Overview

Radial 'fan out' menu of quick-create shortcuts that appears when the floating '+' is tapped. Animates with a single AnimationController using easeOutBack, placing items on a 120-radius arc above the nav bar.

User Flow

  1. AnimationController(.forward) on initState; animation is consumed by each item's Transform.
  2. Each _ArcMenuItemData has imagePath, optional imagePathDark, label and an onTap callback.
  3. Tapping an item closes the menu (arcMenuProvider.notifier.state = false) and pushes its route.
  4. Tapping outside (the BackdropFilter) closes the menu via the same provider.

Cases & Edge Cases

  • Animation is one-way: there's no reverse on dismiss, the whole subtree just unmounts.
  • Items render even before the controller completes — a fast '+' tap then dismiss looks janky without the BackdropFilter masking it.

Code References

  • lib/src/features/shared/home/presentation/widgets/curved_icon_menu.dart:25 // ArcSearchMenu
  • lib/src/features/shared/home/presentation/widgets/curved_icon_menu.dart:37 // _radius constant

API Calls

Empty — fill this in later. Open the manifest and add content here.

Notes

ItemSize 56 + radius 120 is balanced for a phone of ~390 logical width — tablets will leave dead space at the edges.