---
title: "Xử lý hành động nút trong Flutter SDK"
description: "Xử lý hành động nút paywall trong Flutter bằng Adapty để tối ưu hóa việc kiếm tiền từ ứng dụng."
---

Nếu bạn đang xây dựng paywall bằng Adapty Paywall Builder, việc thiết lập các nút đúng cách là rất quan trọng:

1. Thêm [nút trong Paywall Builder](paywall-buttons) và gán cho nó một hành động có sẵn hoặc tạo một ID hành động tùy chỉnh.
2. Viết code trong ứng dụng của bạn để xử lý từng hành động đã gán.

Hướng dẫn này hướng dẫn cách xử lý các hành động tùy chỉnh và hành động có sẵn trong code của bạn.

:::warning
**Chỉ có giao dịch mua và khôi phục được xử lý tự động.** Tất cả các hành động nút khác, chẳng hạn như đóng paywall hoặc mở liên kết, đều yêu cầu triển khai xử lý phù hợp trong code ứng dụng.
:::

## Đóng paywall \{#close-paywalls\}

Để thêm nút đóng paywall:

1. Trong Paywall Builder, thêm một nút và gán cho nó hành động **Close**.
2. Trong code ứng dụng, triển khai trình xử lý cho các hành động `CloseAction` và `AndroidSystemBackAction`.

:::info
Trong Flutter SDK, các hành động `CloseAction` và `AndroidSystemBackAction` mặc định sẽ kích hoạt việc đóng paywall. Tuy nhiên, bạn có thể ghi đè hành vi này trong code nếu cần. Ví dụ, đóng một paywall có thể kích hoạt mở paywall khác.
:::

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

## Mở URL từ paywall \{#open-urls-from-paywalls\}

:::tip
Nếu bạn muốn thêm một nhóm liên kết (ví dụ: điều khoản sử dụng và khôi phục giao dịch mua), hãy thêm phần tử **Link** trong Paywall Builder và xử lý nó giống như nút với hành động **Open URL**.
:::

Để thêm nút mở liên kết từ paywall (ví dụ: **Điều khoản sử dụng** hoặc **Chính sách bảo mật**):

1. Trong Paywall Builder, thêm một nút, gán cho nó hành động **Open URL**, và nhập URL bạn muốn mở.
2. Trong code ứng dụng, triển khai trình xử lý cho hành động `openUrl` để mở URL nhận được trong trình duyệt.

```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;
    }
}
```

## Đăng nhập vào ứng dụng \{#log-into-the-app\}

Để thêm nút đăng nhập người dùng vào ứng dụng:

1. Trong Paywall Builder, thêm một nút và gán cho nó hành động **Login**.
2. Trong code ứng dụng, triển khai trình xử lý cho hành động `login` để xác định người dùng.

```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;
    }
}
```

## Xử lý hành động tùy chỉnh \{#handle-custom-actions\}

Để thêm nút xử lý các hành động khác:

1. Trong Paywall Builder, thêm một nút, gán cho nó hành động **Custom**, và đặt cho nó một ID.
2. Trong code ứng dụng, triển khai trình xử lý cho ID hành động bạn đã tạo.

Ví dụ, nếu bạn có một bộ ưu đãi gói đăng ký khác hoặc sản phẩm mua một lần, bạn có thể thêm nút để hiển thị một paywall khác:

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