FButton constructor

FButton({
  1. required VoidCallback? onPress,
  2. FButtonVariant variant = .primary,
  3. FButtonSizeVariant size = .md,
  4. FButtonStyleDelta style = const .context(),
  5. VoidCallback? onLongPress,
  6. VoidCallback? onDoubleTap,
  7. VoidCallback? onSecondaryPress,
  8. VoidCallback? onSecondaryLongPress,
  9. bool autofocus = false,
  10. FocusNode? focusNode,
  11. ValueChanged<bool>? onFocusChange,
  12. ValueChanged<bool>? onHoverChange,
  13. FTappableVariantChangeCallback? onVariantChange,
  14. bool selected = false,
  15. Map<ShortcutActivator, Intent>? shortcuts,
  16. Map<Type, Action<Intent>>? actions,
  17. MainAxisSize mainAxisSize = .max,
  18. MainAxisAlignment mainAxisAlignment = .center,
  19. CrossAxisAlignment crossAxisAlignment = .center,
  20. TextBaseline? textBaseline,
  21. FButtonContentBuilder? prefixBuilder,
  22. Widget? prefix,
  23. FButtonContentBuilder? suffixBuilder,
  24. Widget? suffix,
  25. FButtonContentBuilder builder = defaultContentBuilder,
  26. Widget? child,
  27. Key? key,
})

Creates a FButton that contains a prefix, child, and suffix.

mainAxisSize determines how the button's width is sized.

mainAxisAlignment and crossAxisAlignment determine how the button's content is aligned horizontally and vertically, respectively.

textBaseline is used to align the prefix, child and suffix if crossAxisAlignment is CrossAxisAlignment.baseline.

prefix and suffix are wrapped in IconThemeData.

The button layout is as follows, assuming the locale is LTR:

|---------------------------------------|
|  [prefix]  [child]  [suffix]  |
|---------------------------------------|

The layout is reversed for RTL locales.

Implementation

FButton({
  required this.onPress,
  this.variant = .primary,
  this.size = .md,
  this.style = const .context(),
  this.onLongPress,
  this.onDoubleTap,
  this.onSecondaryPress,
  this.onSecondaryLongPress,
  this.autofocus = false,
  this.focusNode,
  this.onFocusChange,
  this.onHoverChange,
  this.onVariantChange,
  this.selected = false,
  this.shortcuts,
  this.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,
  super.key,
}) : assert(builder != defaultContentBuilder || child != null, 'Either builder or a child must be provided.'),
     child = Content(
       mainAxisSize: mainAxisSize,
       mainAxisAlignment: mainAxisAlignment,
       crossAxisAlignment: crossAxisAlignment,
       textBaseline: textBaseline,
       prefix: prefix,
       prefixBuilder: prefixBuilder,
       suffix: suffix,
       suffixBuilder: suffixBuilder,
       builder: builder,
       child: child,
     );