🧩Stepper()

Stepper в Flutter

Что такое Stepper?

Stepper — это виджет в Flutter, который помогает пользователям выполнять задачи пошагово. Его часто используют для регистрации, оформления заказов или анкетирования, когда процесс разбит на этапы, и каждый следующий шаг зависит от завершения предыдущего.

Аналогия: Представьте, что вы собираете мебель по инструкции. В каждой инструкции сначала описан один шаг, например, прикрутить ножки, затем следующий — прикрутить спинку, и так далее. Stepper в приложении похож на такие инструкции, упрощая выполнение задач пользователем, так как он может идти шаг за шагом.

Пример использования Stepper

class StepperExample extends StatelessWidget {
  const StepperExample({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stepper(
        steps: const [
          Step(
            title: Text('Step 1'),
            content: Text('Description for step 1'),
            isActive: true,
          ),
          Step(
            title: Text('Step 2'),
            content: Text('Description for step 2'),
          ),
        ],
        currentStep: 0,
        onStepContinue: () {
          // Код для перехода к следующему шагу
        },
        onStepCancel: () {
          // Код для возврата к предыдущему шагу
        },
      ),
    );
  }
}

В этом примере создается простой Stepper с двумя шагами. Каждый шаг отображает заголовок и описание, а кнопки "Continue" и "Cancel" позволяют пользователю переходить между ними.


Все настройки Stepper с пояснениями и примерами

1. required List<Step> steps

Описание: Список шагов, из которых состоит Stepper. Каждый Step содержит заголовок, описание и состояние. Пример:

steps: [
  Step(
    title: Text('Шаг 1'),
    content: Text('Описание для шага 1'),
  ),
  Step(
    title: Text('Шаг 2'),
    content: Text('Описание для шага 2'),
  ),
]

2. ScrollController? controller

Описание: Контроллер для прокрутки в Stepper, позволяющий управлять прокруткой списка шагов. Пример:

controller: ScrollController() // Позволяет управлять прокруткой Stepper

3. ScrollPhysics? physics

Описание: Физика прокрутки для Stepper, которая определяет, как шаги прокручиваются (например, пружинящая прокрутка). Пример:

physics: BouncingScrollPhysics() // Добавляет пружинистую прокрутку для списка шагов

4. StepperType type

Описание: Определяет ориентацию Stepper. Значения могут быть StepperType.vertical для вертикального и StepperType.horizontal для горизонтального расположения. Пример:

type: StepperType.horizontal // Горизонтальный Stepper

5. int currentStep

Описание: Индекс текущего шага, который сейчас активен. Пример:

currentStep: 1 // Указывает на второй шаг, поскольку индексация начинается с 0

6. void Function(int)? onStepTapped

Описание: Функция, вызываемая при нажатии на шаг. Можно использовать для перехода к выбранному шагу. Пример:

onStepTapped: (index) {
  // Код для обработки нажатия на шаг с индексом `index`
}

7. void Function()? onStepContinue

Описание: Функция, вызываемая при нажатии на кнопку "Continue". Используется для перехода к следующему шагу. Пример:

onStepContinue: () {
  // Код для перехода к следующему шагу
}

8. void Function()? onStepCancel

Описание: Функция, вызываемая при нажатии на кнопку "Cancel". Используется для возврата к предыдущему шагу. Пример:

onStepCancel: () {
  // Код для возврата к предыдущему шагу
}

9. Widget Function(BuildContext, ControlsDetails)? controlsBuilder

Описание: Позволяет кастомизировать вид и поведение кнопок управления (например, "Continue" и "Cancel") в Stepper. Пример:

controlsBuilder: (context, details) {
  return Row(
    children: [
      ElevatedButton(
        onPressed: details.onStepContinue,
        child: Text('Далее'),
      ),
      TextButton(
        onPressed: details.onStepCancel,
        child: Text('Назад'),
      ),
    ],
  );
}

10. double? elevation

Описание: Устанавливает высоту тени Stepper, что добавляет объемности элементу. Пример:

elevation: 4.0 // Устанавливает тень для Stepper

11. EdgeInsetsGeometry? margin

Описание: Определяет внешний отступ (margin) вокруг Stepper. Пример:

margin: EdgeInsets.all(16.0) // Устанавливает отступы со всех сторон

12. WidgetStateProperty<Color>? connectorColor

Описание: Задает цвет соединительных линий между шагами. Пример:

connectorColor: MaterialStateProperty.all(Colors.grey) // Серый цвет линий между шагами

13. double? connectorThickness

Описание: Устанавливает толщину соединительных линий между шагами. Пример:

connectorThickness: 2.0 // Толщина соединительной линии 2.0

14. Widget? Function(int, StepState)? stepIconBuilder

Описание: Позволяет кастомизировать иконку шага, которая отображается в индикаторе. Пример:

stepIconBuilder: (index, state) {
  return Icon(Icons.check_circle); // Устанавливает иконку для каждого шага
}

15. double? stepIconHeight

Описание: Высота иконки шага. Пример:

stepIconHeight: 30.0 // Устанавливает высоту иконки шага

16. double? stepIconWidth

Описание: Ширина иконки шага. Пример:

stepIconWidth: 30.0 // Устанавливает ширину иконки шага

17. EdgeInsets? stepIconMargin

Описание: Отступы вокруг иконки шага. Пример:

stepIconMargin: EdgeInsets.symmetric(vertical: 8.0) // Вертикальные отступы иконки

Итог

Stepper — удобный виджет для создания пошагового интерфейса, который помогает пользователям проходить последовательные задачи. С помощью всех этих настроек можно тонко настроить его под дизайн и функциональные требования приложения.

Last updated