resolveDismissAction method
Implementation
CockpitSemanticActionHandler? resolveDismissAction() {
const intent = DismissIntent();
CockpitSemanticActionHandler? resolveFrom(BuildContext? context) {
if (context is! Element || !context.mounted) return null;
final action = Actions.maybeFind<Intent>(context, intent: intent);
if (action == null || !_isDismissActionEnabled(action, context, intent)) {
return null;
}
return () {
if (!context.mounted) return;
final current = Actions.maybeFind<Intent>(context, intent: intent);
if (current == null ||
!_isDismissActionEnabled(current, context, intent)) {
return;
}
Actions.of(context).invokeAction(current, intent, context);
};
}
final focused = resolveFrom(FocusManager.instance.primaryFocus?.context);
if (focused != null) return focused;
final rootContext = _boundaryKey.currentContext;
if (rootContext is! Element) return null;
CockpitSemanticActionHandler? resolved;
void visit(Element element) {
if (resolved != null || !element.mounted) return;
final children = <Element>[];
element.visitChildElements(children.add);
for (final child in children.reversed) {
visit(child);
if (resolved != null) return;
}
resolved = resolveFrom(element);
}
visit(rootContext);
return resolved;
}