import 'dart:async'; import 'package:flutter/widgets.dart'; import 'package:forui/forui.dart'; List autoDismissMenuBuilder( BuildContext context, FPopoverController controller, List? menu, ) { final groups = menu ?? const []; if (groups.isEmpty) return groups; return [ _AutoDismissMenuGroup(controller: controller, children: groups), ]; } class _AutoDismissMenuGroup extends StatelessWidget with FItemGroupMixin { final FPopoverController controller; final List children; const _AutoDismissMenuGroup({ required this.controller, required this.children, }); @override Widget build(BuildContext context) { final parent = FInheritedItemCallbacks.maybeOf(context); return FInheritedItemCallbacks( onHoverEnter: parent?.onHoverEnter, onHoverExit: parent?.onHoverExit, onPress: () { parent?.onPress?.call(); unawaited(controller.hide()); }, onLongPress: () { parent?.onLongPress?.call(); unawaited(controller.hide()); }, child: FItemGroup.merge(children: children), ); } }