Виджет SwipeableStack создает стопку виджетов, расположенных в типичном перекрывающемся порядке (первый/верхний виджет виден полностью, а последующие виджеты располагаются под ним). Виджет на вершине можно удалить, проведя по нему пальцем в любом направлении.
Например, с помощью этого виджета можно создать пользовательский опыт ‘Tinder-like swipe’.

Добавление SwipeableStack
Давайте посмотрим, как добавить виджет SwipeableStack, создав пример, который выглядит следующим образом:

Ниже приведены пошаговые инструкции:
- Сначала нажмите на + Add Widget и перетащите виджет SwipeableStack с вкладки Layout Elements или добавьте его непосредственно из дерева виджетов.
- Внутри SwipeableStack добавьте Card > Column (с Cross Axis Alignment -> Start).
- Добавьте один виджет Image внутри колонки и установите его ширину на 100%, а высоту на 50%.
- Чтобы отобразить заголовок, добавьте виджет Text, установите его Theme Text Style на Title 1, а left + top padding на 8.
- Аналогично, для отображения описания добавьте еще один текстовый виджет и установите его тематический стиль текста на Subtitle 2.
- Чтобы показать несколько карточек, можно скопировать виджет Card и вставить его несколько раз внутрь виджета SwipeableStack.

Отображение данных бэкенда
Вам может понадобиться показать список карт из бэкенда в виджете SwipeableStack.
Мы позволяем вам получать данные из следующих источников:
- Показывать данные из Firestore
- Показывать данные из вызова API
Отображение данных из Firestore
Вы можете использовать Firstore для хранения данных вашего приложения в модели коллекция-документ. Давайте посмотрим, как можно отобразить элементы из коллекции Firestore в SwipeableStack, построив пример, похожий на приведенный ниже:

Предварительные условия
Перед получением данных из Firestore убедитесь, что вы выполнили все необходимые условия, чтобы иметь некоторые данные в Firestore.
- Ознакомьтесь со структурированием базы данных Firebase.
- Выполните все шаги в разделе Firebase Setup для вашего проекта.
- Создайте коллекцию под названием cats.
- Добавьте в Коллекцию данные с информацией о кошках.
Коллекция должна выглядеть следующим образом:

Чтобы показать данные из Firestore:
- Сначала запросите коллекцию на SwipeableStack, чтобы получить список документов из коллекции Firestore (инструкции аналогичны запросу коллекции на ListView).
- Отобразите данные (информацию о кошке) на элементах пользовательского интерфейса, таких как Image и Text.

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

Предварительные условия
Прежде чем показывать данные из вызовов API, убедитесь, что вы выполнили все перечисленные предварительные условия.
- Будьте знакомы с вызовами API.
- Добавьте вызовы API в проект FlutterFlow.
После добавления вызова API в FlutterFlow он выглядит следующим образом:

Выполнение вызова API на SwipeableStack
Вызов API позволяет получить ответ (содержащий список элементов) и показать их в SwipeableStack.
Чтобы выполнить вызов API на SwipeableStack:
- Выберите виджет SwipeableStack в дереве виджетов или в области холста.
- Перейдите на вкладку Backend Query (в правой части экрана).
- Установите для параметра Тип запроса значение Вызов API.
- Установите Group или Call Name на имя API, которое получает данные.
- Нажмите кнопку Подтвердить.

Генерация динамических дочерних элементов
Генерация динамических дочерних элементов поможет вам подготовить список элементов, присутствующих в ответе API. Возвращенный результат сохраняется в переменной, которую вы можете использовать для заполнения SwipeableStack.
Чтобы создать динамические дочерние элементы:
- Выберите SwipeableStack в дереве виджетов или в области холста.
- Перейдите на вкладку Generate Dynamic Children (в правой части экрана).
- Введите соответствующее имя переменной.
- Нажмите на UNSET и установите исходное значение на [apicall_name] Response.
- Установите для параметра API Response Options значение JSON Body.
- Установите для параметра Доступные параметры значение Путь JSON.
- Внутри параметров JSON Path Name и JSON Path введите выражение JSON для получения списка. Как получить JSON Path, смотрите здесь.
- Нажмите кнопку Подтвердить.

Отображение данных в элементах пользовательского интерфейса
Чтобы показать данные (информацию о кошке) на элементах пользовательского интерфейса, таких как изображение и текст:
- Выберите виджет Image, перейдите на панель свойств, найдите свойство Path и нажмите на текст Set from Variable.
- Выберите элемент [имя_переменной] из списка. Это должно быть имя переменной, которое вы указали при генерации дочерних элементов из переменной.
- Установите для параметра Available Options значение JSON Path.
- Внутри JSON Path введите выражение JSON для получения URL изображения. Как получить JSON Path, смотрите здесь.
- Нажмите кнопку Подтвердить.
- Аналогичным образом выберите виджет «Текст«. Перейдите в редактор свойств и установите данные для свойства Text.

Проведение карты по нажатию кнопки
Вы можете захотеть разрешить пользователям пролистывать карточки при нажатии кнопки. Например, пролистывать карточку при нажатии кнопки «Не нравится» или «Отклонить», а правую карточку — при нажатии кнопки «Нравится» или «Принять». Вы можете сделать это, добавив действие Control Swipeable Stack.

Вот как можно провести по карте нажатием кнопки:
- Сначала добавьте виджет SwipeableStack.
- Добавьте пару кнопок внутри виджета карты. (например, кнопку «нравится» или «не нравится»).
- Теперь выберите любую кнопку и определите действие Control Swipeable Stack.
Получение уведомления при проведении пальцем по экрану
Вы можете захотеть получать обратный вызов, когда дочерний виджет (например, карточка) пролистывается, и добавлять дальнейшие действия. Например, обновление элемента (флаг «нравится» или «не нравится») в бэкенде на основе типа пролистывания (влево или вправо).
Вот как можно получить обратный вызов при пролистывании дочерних виджетов:
- Выберите виджет SwipeableStack в дереве виджетов или в области холста.
- Выберите Действия на панели свойств (правое меню) и нажмите Открыть. Это откроет редактор потока действий в новом всплывающем окне.
- Выберите тип свайпа (среди вариантов On Widget Swipe, On Left Swipe, On Right Swipe, On Up Swipe, On Down Swipe), при котором вы хотите получить обратный вызов. Если направление пролистывания для вас не важно, выберите On Widget Swipe.
- Теперь вы можете добавить любое действие, которое будет вызвано при получении выбранного обратного вызова — например, показ сообщения на панели при пролистывании.

Настройка
Вы можете настроить внешний вид этого виджета с помощью различных свойств, доступных на панели свойств.
Изменение размера карточки
Чтобы изменить размер верхней, средней и нижней карточек:
- Выберите виджет SwipeableStack в дереве виджетов или в области холста и перейдите на панель свойств.
- Чтобы изменить высоту и ширину верхней карточки, введите значение от 0 до 1 в поле «Дробь высоты верхней карточки» и «Дробь ширины верхней карточки«. Примечание: Эти значения будут считаться в процентах. Например, если вы введете 0,5, карточка будет занимать 50% доступного пространства.
- Аналогичным образом можно настроить высоту и ширину средней и нижней карты.
