🧩ReorderableListView

Что такое ReorderableListView

ReorderableListView — это виджет в Flutter, который позволяет пользователям изменять порядок элементов в списке с помощью перетаскивания. Представьте себе, что у вас есть список задач, и вы хотите, чтобы пользователи могли легко менять порядок выполнения этих задач, просто перетаскивая их вверх или вниз в списке. ReorderableListView делает это возможным и интуитивно понятным.

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

Вот пример, как можно использовать ReorderableListView для создания простого списка задач:

  1. ReorderableListView: Это основной виджет, который позволяет изменять порядок элементов в списке.

  2. onReorder: Это функция, которая вызывается при изменении порядка элементов. В ней мы обновляем список элементов.

  3. children: Список виджетов, которые будут отображаться в ReorderableListView. Каждый элемент должен иметь уникальный ключ, чтобы Flutter мог отслеживать изменения.

Зачем это нужно

ReorderableListView полезен, когда вам нужно предоставить пользователям возможность изменять порядок элементов в списке. Это может быть полезно в различных приложениях, таких как:

  • Списки задач

  • Приложения для заметок

  • Приложения для управления проектами

Все настройки ReorderableListView

  1. List<Widget> children

    • Описание: Список виджетов, которые будут отображаться в ReorderableListView. Каждый виджет должен иметь уникальный ключ.

    • Пример:

  2. void Function(int, int) onReorder

    • Описание: Функция, которая вызывается при изменении порядка элементов. Принимает два параметра: старый индекс и новый индекс.

    • Пример:

  3. void Function(int)? onReorderStart

    • Описание: Функция, которая вызывается, когда начинается процесс перетаскивания элемента. Принимает индекс перетаскиваемого элемента.

    • Пример:

  4. void Function(int)? onReorderEnd

    • Описание: Функция, которая вызывается, когда заканчивается процесс перетаскивания элемента. Принимает индекс элемента.

    • Пример:

  5. double? itemExtent

    • Описание: Задает фиксированную высоту (или ширину, если горизонтальная прокрутка) для элементов списка. Это может улучшить производительность, если у вас есть фиксированные размеры.

    • Пример:

  6. double? Function(int, SliverLayoutDimensions)? itemExtentBuilder

    • Описание: Функция, которая позволяет задать высоту элементов на основе их индекса и размеров.

    • Пример:

  7. Widget? prototypeItem

    • Описание: Шаблон элемента, который используется для определения размеров элементов, пока они перетаскиваются. Это помогает улучшить плавность анимации.

    • Пример:

  8. Widget Function(Widget, int, Animation<double>)? proxyDecorator

    • Описание: Функция, которая позволяет настроить внешний вид элемента во время перетаскивания. Она возвращает виджет, который будет отображаться вместо элемента, пока он перетаскивается.

    • Пример:

  9. bool buildDefaultDragHandles = true

    • Описание: Указывает, нужно ли строить стандартные ручки для перетаскивания элементов. Если false, вы можете предоставить свои собственные ручки.

    • Пример:

  10. EdgeInsets? padding

    • Описание: Устанавливает отступы вокруг списка.

    • Пример:

  11. Widget? header

    • Описание: Заголовок, который будет отображаться над списком.

    • Пример:

  12. Widget? footer

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

    • Пример:

  13. Axis scrollDirection = Axis.vertical

    • Описание: Указывает направление прокрутки списка (вертикально или горизонтально).

    • Пример:

  14. bool reverse = false

    • Описание: Если true, прокрутка будет в обратном порядке (с конца к началу).

    • Пример:

  15. ScrollController? scrollController

    • Описание: Позволяет управлять прокруткой программно.

    • Пример:

  16. bool? primary

    • Описание: Указывает, является ли этот виджет основным для прокрутки. Если true, прокрутка будет связана с родительским виджетом.

    • Пример:

  17. ScrollPhysics? physics

    • Описание: Определяет поведение прокрутки, например, пружинный эффект или замедление.

    • Пример:

  18. bool shrinkWrap = false

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

    • Пример:

  19. double anchor = 0.0

    • Описание: Определяет точку, вокруг которой будет происходить прокрутка. Значение от 0.0 до 1.0, где 0.0 — это верхняя часть, а 1.0 — нижняя часть.

    • Пример:

  20. double? cacheExtent

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

    • Пример:

  21. DragStartBehavior dragStartBehavior = DragStartBehavior.start

    • Описание: Определяет поведение, когда начинается перетаскивание. Может быть "start" или "down".

    • Пример:

  22. ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual

    • Описание: Определяет, как клавиатура будет скрываться при прокрутке списка.

    • Пример:

  23. String? restorationId

    • Описание: Идентификатор для восстановления состояния виджета после перезапуска приложения.

    • Пример:

  24. Clip clipBehavior = Clip.hardEdge

    • Описание: Указывает, как будут обрабатываться элементы, выходящие за пределы виджета. Может быть "hardEdge", "antiAlias", "none".

    • Пример:

  25. double? autoScrollerVelocityScalar

    • Описание: Указывает скорость прокрутки во время перетаскивания, когда элемент находится рядом с краем списка.

    • Пример:

Заключение

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

Last updated