---
title: "Flutter SDKでボタンアクションに応答する"
description: "AdaptyのFlutter SDKでペイウォールのボタンアクションを処理し、アプリのマネタイズを改善する方法を解説します。"
---

ペイウォールビルダーでペイウォールを作成する場合、ボタンを適切に設定することが重要です。

1. [ペイウォールビルダーでボタンを追加](paywall-buttons)し、既存のアクションを割り当てるか、カスタムアクションIDを作成します。
2. 割り当てた各アクションを処理するコードをアプリに実装します。

このガイドでは、カスタムアクションと既存アクションをコードで処理する方法を説明します。

:::warning
**購入と復元のみが自動的に処理されます。** ペイウォールを閉じたりリンクを開いたりする操作など、その他のボタンアクションはすべて、アプリのコードに適切な処理を実装する必要があります。
:::

## ペイウォールを閉じる \{#close-paywalls\}

ペイウォールを閉じるボタンを追加するには:

1. ペイウォールビルダーでボタンを追加し、**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** 要素を追加し、**Open URL** アクションが割り当てられたボタンと同じ方法で処理します。
:::

ペイウォールからリンクを開くボタン（**Terms of use** や **Privacy policy** など）を追加するには:

1. ペイウォールビルダーでボタンを追加し、**Open URL** アクションを割り当てて、開きたいURLを入力します。
2. アプリのコードに、受け取ったURLをブラウザで開く `openUrl` アクションのハンドラーを実装します。

```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. ペイウォールビルダーでボタンを追加し、**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. ペイウォールビルダーでボタンを追加し、**Custom** アクションを割り当てて、IDを設定します。
2. アプリのコードに、作成したアクションIDのハンドラーを実装します。

たとえば、別のサブスクリプションプランや買い切り購入がある場合、別のペイウォールを表示するボタンを追加できます。

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