Repository: flutter/flutter
File: packages/flutter/lib/src/material/stepper.dart (Dart)

Code before:

  /// Overrides the default step icon margin.
  final EdgeInsets? stepIconMargin;

  /// The [Step.content] will be clipped to this Clip type.
  ///
  /// Defaults to [Clip.none].
  ///
  /// See also:
  ///
  ///  * [Clip], which explains how to use this property.
  final Clip clipBehavior;

  /// The padding around the header row in both [StepperType.vertical] and
  /// [StepperType.horizontal] steppers.
  ///
  /// Defaults to to `EdgeInsets.symmetric(horizontal: 24.0)`.
  final EdgeInsetsGeometry? headerPadding;

  /// The padding around the content area in both [StepperType.vertical] and
  /// [StepperType.horizontal] steppers.
  ///
  /// For [StepperType.horizontal], defaults to `EdgeInsets.all(24.0)`.
  ///
  /// For [StepperType.vertical], defaults to
  /// `EdgeInsetsDirectional.only(start: 60.0, end: 24.0, bottom: 24.0)`. The `start` padding is also increased by the `left` value of [stepIconMargin] if it is provided.
  final EdgeInsetsGeometry? contentPadding;

  @override
  State<Stepper> createState() => _StepperState();
}

class _StepperState extends State<Stepper> with TickerProviderStateMixin {
  late List<GlobalKey> _keys;
  final Map<int, StepState> _oldStates = <int, StepState>{};

  @override
  void initState() {
    super.initState();
    _keys = List<GlobalKey>.generate(widget.steps.length, (int i) => GlobalKey());

    for (var i = 0; i < widget.steps.length; i += 1) {
      _oldStates[i] = widget.steps[i].state;
    }
  }

  @override
  void didUpdateWidget(Stepper oldWidget) {
    super.didUpdateWidget(oldWidget);
    assert(widget.steps.length == oldWidget.steps.length);


Review comment (suggestion):
```suggestion
  /// For [StepperType.vertical], defaults to
  /// `EdgeInsetsDirectional.only(start: 60.0, end: 24.0, bottom: 24.0)`.
  /// The `start` padding is also increased by the `left` value of
  /// [stepIconMargin] if it is provided.
```
Warp lines.

Code after:
  final StepIconBuilder? stepIconBuilder;

  /// Overrides the default step icon size height.
  final double? stepIconHeight;

  /// Overrides the default step icon size width.
  final double? stepIconWidth;

  /// Overrides the default step icon margin.
  final EdgeInsets? stepIconMargin;

  /// The [Step.content] will be clipped to this Clip type.
  ///
  /// Defaults to [Clip.none].
  ///
  /// See also:
  ///
  ///  * [Clip], which explains how to use this property.
  final Clip clipBehavior;

  /// The padding around the header row in both [StepperType.vertical] and
  /// [StepperType.horizontal] steppers.
  ///
  /// Defaults to to `EdgeInsets.symmetric(horizontal: 24.0)`.
  final EdgeInsetsGeometry? headerPadding;

  /// The padding around the content area in both [StepperType.vertical] and
  /// [StepperType.horizontal] steppers.
  ///
  /// For [StepperType.horizontal], defaults to `EdgeInsets.all(24.0)`.
  ///
  /// For [StepperType.vertical], defaults to
  /// `EdgeInsetsDirectional.only(start: 60.0, end: 24.0, bottom: 24.0)`.
  /// The `start` padding is also increased by the `left` value of
  /// [stepIconMargin] if it is provided.
  final EdgeInsetsGeometry? contentPadding;

  @override
  State<Stepper> createState() => _StepperState();
}

class _StepperState extends State<Stepper> with TickerProviderStateMixin {
  late List<GlobalKey> _keys;
  final Map<int, StepState> _oldStates = <int, StepState>{};

  @override
  void initState() {
    super.initState();
    _keys = List<GlobalKey>.generate(widget.steps.length, (int i) => GlobalKey());

    for (var i = 0; i < widget.steps.length; i += 1) {