---
title: "Обработка действий кнопок в Flutter SDK"
description: "Обрабатывайте действия кнопок пейвола во Flutter с помощью Adapty для улучшения монетизации приложения."
---

Если вы создаёте пейволы с помощью Paywall Builder, важно правильно настроить кнопки:

1. Добавьте [кнопку в Paywall Builder](paywall-buttons) и назначьте ей одно из готовых действий или создайте собственный ID действия.
2. Напишите в приложении код для обработки каждого назначенного действия.

В этом гайде показано, как обрабатывать в коде как встроенные, так и пользовательские действия.

:::warning
**Покупки и восстановления обрабатываются автоматически.** Все остальные действия кнопок — закрытие пейволов, открытие ссылок и т. д. — требуют явной реализации в коде приложения.
:::

## Закрытие пейволов \{#close-paywalls\}

Чтобы добавить кнопку, закрывающую пейвол:

1. В Paywall Builder добавьте кнопку и назначьте ей действие **Close**.
2. В коде приложения реализуйте обработчик для действий `CloseAction` и `AndroidSystemBackAction`.

:::info
Во Flutter SDK действия `CloseAction` и `AndroidSystemBackAction` по умолчанию закрывают пейвол. Однако при необходимости это поведение можно переопределить в коде. Например, закрытие одного пейвола может инициировать открытие другого.
:::

```dart
void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
    switch (action) {
      case const CloseAction():
      case const AndroidSystemBackAction():
        view.dismiss();
        break;
      default:
        break;
    }
}
```

## Открытие URL из пейволов \{#open-urls-from-paywalls\}

:::tip
Если вы хотите добавить группу ссылок (например, условия использования и восстановление покупок), добавьте элемент **Link** в Paywall Builder и обработайте его так же, как кнопки с действием **Open URL**.
:::

Чтобы добавить кнопку, открывающую ссылку из пейвола (например, **Terms of use** или **Privacy policy**):

1. В Paywall Builder добавьте кнопку, назначьте ей действие **Open URL** и укажите нужный URL.
2. В коде приложения реализуйте обработчик действия `openUrl`, который открывает полученный URL в браузере.

```dart
// You have to install url_launcher plugin in order to handle urls:
// https://pub.dev/packages/url_launcher

void paywallViewDidPerformAction(AdaptyUIView view, AdaptyUIAction action) {
    switch (action) {
      case OpenUrlAction(url: final url):
        final Uri uri = Uri.parse(url);
        launchUrl(uri, mode: LaunchMode.inAppBrowserView);
        break;
      default:
        break;
    }
}
```

## Авторизация в приложении \{#log-into-the-app\}

Чтобы добавить кнопку, выполняющую вход пользователя в приложение:

1. В Paywall Builder добавьте кнопку и назначьте ей действие **Login**.
2. В коде приложения реализуйте обработчик действия `login`, который идентифицирует пользователя.

```dart
void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
    switch (action) {
      case CustomAction(action: 'login'):
        // Handle login action
        Navigator.of(context).push(MaterialPageRoute(builder: (context) => LoginScreen()));
        break;
      default:
        break;
    }
}
```

## Обработка пользовательских действий \{#handle-custom-actions\}

Чтобы добавить кнопку для обработки любых других действий:

1. В Paywall Builder добавьте кнопку, назначьте ей действие **Custom** и задайте ID.
2. В коде приложения реализуйте обработчик для созданного вами ID действия.

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

```dart
void paywallViewDidPerformAction(AdaptyUIPaywallView view, AdaptyUIAction action) {
   switch (action) {
     case CustomAction(action: 'openNewPaywall'):
       // Display another paywall
       break;
     default:
       break;
   }
}
```