OutlinedButton.icon constructor

OutlinedButton.icon(
  1. {Key? key,
  2. required VoidCallback? onPressed,
  3. VoidCallback? onLongPress,
  4. ButtonStyle? style,
  5. FocusNode? focusNode,
  6. bool? autofocus,
  7. Clip? clipBehavior,
  8. MaterialStatesController? statesController,
  9. Widget? icon,
  10. required Widget label,
  11. IconAlignment iconAlignment = IconAlignment.start}
)

Create a text button from a pair of widgets that serve as the button's icon and label.

The icon and label are arranged in a row and padded by 12 logical pixels at the start, and 16 at the end, with an 8 pixel gap in between.

If icon is null, will create an OutlinedButton instead.

Determines the alignment of the icon within the widgets such as:

The effect of iconAlignment depends on TextDirection. If textDirection is TextDirection.ltr then IconAlignment.start and IconAlignment.end align the icon on the left or right respectively. If textDirection is TextDirection.rtl the the alignments are reversed.

Defaults to IconAlignment.start.

This sample demonstrates how to use iconAlignment to align the button icon to the start or the end of the button.
link

To create a local project with this code sample, run:
flutter create --sample=material.IconAlignment.1 mysample

Implementation

factory OutlinedButton.icon({
  Key? key,
  required VoidCallback? onPressed,
  VoidCallback? onLongPress,
  ButtonStyle? style,
  FocusNode? focusNode,
  bool? autofocus,
  Clip? clipBehavior,
  MaterialStatesController? statesController,
  Widget? icon,
  required Widget label,
  IconAlignment iconAlignment = IconAlignment.start,
}) {
  if (icon == null) {
    return OutlinedButton(
      key: key,
      onPressed: onPressed,
      onLongPress: onLongPress,
      style: style,
      focusNode: focusNode,
      autofocus: autofocus ?? false,
      clipBehavior: clipBehavior ?? Clip.none,
      statesController: statesController,
      child: label,
    );
  }
  return _OutlinedButtonWithIcon(
    key: key,
    onPressed: onPressed,
    onLongPress: onLongPress,
    style: style,
    focusNode: focusNode,
    autofocus: autofocus ?? false,
    clipBehavior: clipBehavior ?? Clip.none,
    statesController: statesController,
    icon: icon,
    label: label,
    iconAlignment: iconAlignment,
  );
}