FButton class

A button.

FButton typically contains icons and/or a label. If the onPress and onLongPress callbacks are null, then this button will be disabled. A disabled button only reacts to touch when onDisabledPress is given.

Why do tappables inside OverlayPortals sometimes not respond to taps?

Wrap the overlay content in FTappableGroup.isolate.

This is probably caused by the OverlayPortal being wrapped in an FTappableGroup. Since an OverlayPortal reparents inherited widgets, the FTappables are registered with the ancestor FTappableGroup which does not hit test across rendering layers.

FPortal-based widgets handle this automatically.

See:

Inheritance

Constructors

FButton({required VoidCallback? onPress, FButtonVariant variant = .primary, FButtonSizeVariant size = .md, FButtonStyleDelta style = const .context(), VoidCallback? onDisabledPress, VoidCallback? onLongPress, VoidCallback? onDoubleTap, VoidCallback? onSecondaryPress, VoidCallback? onSecondaryLongPress, String? semanticsLabel, String? semanticsTooltip, bool autofocus = false, FocusNode? focusNode, ValueChanged<bool>? onFocusChange, ValueChanged<bool>? onHoverChange, FTappableVariantChangeCallback? onVariantChange, bool selected = false, Map<ShortcutActivator, Intent>? shortcuts, Map<Type, Action<Intent>>? actions, MainAxisSize mainAxisSize = .max, MainAxisAlignment mainAxisAlignment = .center, CrossAxisAlignment crossAxisAlignment = .center, TextBaseline? textBaseline, FButtonContentBuilder? prefixBuilder, Widget? prefix, FButtonContentBuilder? suffixBuilder, Widget? suffix, FButtonContentBuilder builder = defaultContentBuilder, Widget? child, Key? key})
Creates a FButton that contains a prefix, child, and suffix.
FButton.icon({required VoidCallback? onPress, FButtonVariant variant = .outline, FButtonSizeVariant size = .md, FButtonStyleDelta style = const .context(), VoidCallback? onDisabledPress, VoidCallback? onLongPress, VoidCallback? onDoubleTap, VoidCallback? onSecondaryPress, VoidCallback? onSecondaryLongPress, String? semanticsLabel, String? semanticsTooltip, bool autofocus = false, FocusNode? focusNode, ValueChanged<bool>? onFocusChange, ValueChanged<bool>? onHoverChange, FTappableVariantChangeCallback? onVariantChange, bool selected = false, Map<ShortcutActivator, Intent>? shortcuts, Map<Type, Action<Intent>>? actions, FButtonIconContentBuilder builder = defaultIconContentBuilder, Widget? child, Key? key})
Creates a FButton that contains only an icon.
FButton.raw({required VoidCallback? onPress, required Widget child, FButtonVariant variant = .primary, FButtonSizeVariant size = .md, FButtonStyleDelta style = const .context(), VoidCallback? onDisabledPress, VoidCallback? onLongPress, VoidCallback? onDoubleTap, VoidCallback? onSecondaryPress, VoidCallback? onSecondaryLongPress, String? semanticsLabel, String? semanticsTooltip, bool autofocus = false, FocusNode? focusNode, ValueChanged<bool>? onFocusChange, ValueChanged<bool>? onHoverChange, FTappableVariantChangeCallback? onVariantChange, bool selected = false, Map<ShortcutActivator, Intent>? shortcuts, Map<Type, Action<Intent>>? actions, Key? key})
Creates a FButton with custom content.
const

Properties

actions → Map<Type, Action<Intent>>?
The actions. Defaults to calling onPress when ActivateIntent is invoked and onPress is not null.
final
autofocus → bool
True if this widget will be selected as the initial focus when no other node in its scope is currently focused.
final
child → Widget
The child.
final
focusNode → FocusNode?
An optional focus node to use as the focus node for this widget.
final
hashCode → int
The hash code for this object.
no setterinherited
key → Key?
Controls how one widget replaces another widget in the tree.
finalinherited
onDisabledPress → VoidCallback?
A callback for when the widget is pressed while disabled. Setting it does not enable the widget.
final
onDoubleTap → VoidCallback?
A callback for when the widget is double tapped.
final
onFocusChange → ValueChanged<bool>?
Handler called when the focus changes.
final
onHoverChange → ValueChanged<bool>?
Handler called when the hover changes.
final
onLongPress → VoidCallback?
A callback for when the widget is long pressed.
final
onPress → VoidCallback?
A callback for when the widget is pressed.
final
onSecondaryLongPress → VoidCallback?
A callback for when the widget is pressed with a secondary button (usually right-click on desktop).
final
onSecondaryPress → VoidCallback?
A callback for when the widget is pressed with a secondary button (usually right-click on desktop).
final
onVariantChange → FTappableVariantChangeCallback?
Handler called when there are any changes to a tappable's FTappableVariants.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
selected → bool
True if this button is currently selected. Defaults to false.
final
semanticsLabel → String?
The semantic label used by accessibility frameworks.
final
semanticsTooltip → String?
The tooltip announced by accessibility frameworks, in addition to the semantic label. Null if it has no tooltip.
final
shortcuts → Map<ShortcutActivator, Intent>?
The shortcuts. Defaults to calling ActivateIntent if onPress is not null.
final
size → FButtonSizeVariant
The button size. Defaults to FButtonSizeVariant.md.
final
style → FButtonStyleDelta
The style delta applied to the style resolved by variant and size.
final
variant → FButtonVariant
The variant. Defaults to FButtonVariant.primary.
final

Methods

build(BuildContext context) → Widget
Describes the part of the user interface represented by this widget.
override
createElement() → StatelessElement
Creates a StatelessElement to manage this widget's location in the tree.
inherited
debugDescribeChildren() → List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) → String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String
Returns a one-line detailed description of the object.
inherited
toStringShort() → String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Static Methods

defaultContentBuilder(BuildContext context, FButtonStyle style, TextStyle textStyle, IconThemeData iconStyle, FCircularProgressStyle progressStyle, Widget? child) → Widget
The default FButtonContentBuilder which returns child unchanged.
defaultIconContentBuilder(BuildContext context, FButtonStyle style, IconThemeData iconStyle, Widget? child) → Widget
The default FButtonIconContentBuilder which returns child unchanged.