---
title: "Flutter SDK'da onboarding'leri gösterme"
description: "Dönüşümleri artırmak için onboarding'leri etkili biçimde nasıl göstereceğinizi öğrenin."
---

:::warning
**Onboardings, SDK v4'te kullanımdan kaldırılmıştır ve gelecekteki bir sürümde kaldırılacaktır.** Artık hata düzeltmesi veya iyileştirme almamaktadır. Bunun yerine [flow'ları](flutter-get-pb-paywalls) kullanın: onboarding'lerin WebView içinde çalışmasının aksine, flow'lar cihazda doğrudan native olarak render edilir; bu sayede daha akıcı animasyonlar, tutarlı bir native görünüm, daha hızlı yükleme süreleri ve WebView bağımlılığı ortadan kalkar. Başlamak için [Flow'ları ve paywall'ları edinin](flutter-get-pb-paywalls) ve [Flow'ları ve paywall'ları görüntüleyin](flutter-present-paywalls) sayfalarına bakın.
:::
Builder ile bir onboarding oluşturduysanız, bunu Flutter uygulama kodunuzda kullanıcıya göstermek için ayrıca render etmeniz gerekmez. Bu tür bir onboarding, hem neyin gösterileceğini hem de nasıl gösterileceğini içerir.

Başlamadan önce şunları kontrol edin:

1. [Adapty Flutter SDK](sdk-installation-flutter) 3.8.0 veya daha yeni bir sürümü yüklemiş olmanız.
2. Bir [onboarding oluşturmuş](create-onboarding) olmanız.
3. Onboarding'i bir [placement](placements)'a eklemiş olmanız.

Adapty Flutter SDK, onboarding'leri sunmak için iki yöntem sunar:

- **Bağımsız ekran**

- **Gömülü widget**
## Bağımsız ekran olarak göster \{#present-as-standalone-screen\}

Bir onboarding'i bağımsız bir ekran olarak görüntülemek için, `createOnboardingView` metoduyla oluşturulan `onboardingView` üzerinde `onboardingView.present()` metodunu kullanın. Her `view` yalnızca bir kez kullanılabilir. Onboarding'i tekrar göstermeniz gerekiyorsa, yeni bir `onboardingView` örneği oluşturmak için `createOnboardingView` metodunu bir kez daha çağırın.

:::warning
Aynı `onboardingView`'ı yeniden oluşturmadan tekrar kullanmak, `AdaptyUIError.viewAlreadyPresented` hatasına yol açabilir.
:::
```dart showLineNumbers title="Flutter"
try {
  await onboardingView.present();
} on AdaptyError catch (e) {
  // handle the error
} catch (e) {
  // handle the error
}
```

### Onboarding'i kapatma \{#dismiss-the-onboarding\}

Onboarding'i programatik olarak kapatmanız gerektiğinde `dismiss()` metodunu kullanın:

```dart showLineNumbers title="Flutter"
try {
  await onboardingView.dismiss();
} on AdaptyError catch (e) {
  // handle the error
} catch (e) {
  // handle the error
}
```

### iOS sunum stilini yapılandırma \{#configure-ios-presentation-style\}

`present()` metoduna `iosPresentationStyle` parametresini geçirerek onboarding'in iOS'ta nasıl sunulacağını yapılandırın. Parametre `AdaptyUIIOSPresentationStyle.fullScreen` (varsayılan) veya `AdaptyUIIOSPresentationStyle.pageSheet` değerlerini kabul eder.

```dart showLineNumbers
try {
  await onboardingView.present(iosPresentationStyle: AdaptyUIIOSPresentationStyle.pageSheet);
} on AdaptyError catch (e) {
  // handle the error
} catch (e) {
  // handle the error
}
```

## Widget hiyerarşisine yerleştirme \{#embed-in-widget-hierarchy\}

Bir onboarding'i mevcut widget ağacınıza gömmek için `AdaptyUIOnboardingPlatformView` widget'ını doğrudan Flutter widget hiyerarşinizde kullanın.
```dart showLineNumbers title="Flutter"
AdaptyUIOnboardingPlatformView(
  onboarding: onboarding, // The onboarding object you fetched
  onDidFinishLoading: (meta) {
  },
  onDidFailWithError: (error) {
  },
  onCloseAction: (meta, actionId) {
  },
  onPaywallAction: (meta, actionId) {
  },
  onCustomAction: (meta, actionId) {
  },
  onStateUpdatedAction: (meta, elementId, params) {
  },
  onAnalyticsEvent: (meta, event) {
  },
)
```

:::note 
Android platform view'ın çalışması için `MainActivity`'nizin `FlutterFragmentActivity`'yi genişlettiğinden emin olun:
```kotlin showLineNumbers title="Kotlin"
class MainActivity : FlutterFragmentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }
}
```
:::

## Onboarding sırasında yükleme ekranı \{#loader-during-onboarding\}

Bir onboarding sunarken, arka planda görünüm başlatılırken açılış ekranı ile onboarding arasında kısa bir yükleme ekranı görebilirsiniz. Bunu ihtiyacınıza göre farklı şekillerde ele alabilirsiniz.

#### onDidFinishLoading kullanarak açılış ekranını kontrol etme \{#control-splash-screen-using-ondidfinishloading\}

:::note
Bu yaklaşım yalnızca onboarding bir widget olarak yerleştirildiğinde kullanılabilir. Bağımsız ekran sunumu için mevcut değildir.
:::
Önerilen platformlar arası yaklaşım, onboarding tam olarak yüklenene kadar splash ekranını veya özel overlay'inizi görünür tutmak, ardından manuel olarak gizlemektir.

Gömülü widget kullanırken, kendi widget'ınızı onun üzerine yerleştirin ve `onDidFinishLoading` tetiklendiğinde overlay'i gizleyin:

```dart showLineNumbers title="Flutter"
AdaptyUIOnboardingPlatformView(
  onboarding: onboarding,
  onDidFinishLoading: (meta) {
    // Hide your custom splash screen or overlay here
  },
  // ... other callbacks
)
```
### Yerel yükleyiciyi özelleştirme \{#customize-native-loader\}

:::important
Bu yaklaşım platforma özgüdür ve yerel UI kodunun bakımını gerektirir. Uygulamanızda zaten ayrı yerel katmanlar kullanmıyorsanız önerilmez.
:::

Varsayılan yükleyiciyi özelleştirmeniz gerekiyorsa platforma özgü layout'larla değiştirebilirsiniz. Bu yaklaşım Android ve iOS için ayrı uygulamalar gerektirir:

- **iOS**: Xcode projenize `AdaptyOnboardingPlaceholderView.xib` ekleyin
- **Android**: `res/layout` klasöründe `adapty_onboarding_placeholder_view.xml` oluşturun ve burada bir yer tutucu tanımlayın

## Onboarding'lerde bağlantıların nasıl açılacağını özelleştirme \{#customize-how-links-open-in-onboardings\}

:::important
Onboarding'lerde bağlantıların nasıl açılacağını özelleştirme özelliği Adapty SDK v3.15.1 sürümünden itibaren desteklenmektedir.
:::

Varsayılan olarak, onboarding'lerdeki bağlantılar uygulama içi tarayıcıda açılır. Bu, web sayfalarını uygulamanızın içinde göstererek kullanıcıların başka bir uygulamaya geçmeden içeriği görüntülemesine olanak tanır ve kesintisiz bir kullanıcı deneyimi sunar.

Bağlantıların bunun yerine harici tarayıcıda açılmasını tercih ediyorsanız, `externalUrlsPresentation` parametresini `AdaptyWebPresentation.externalBrowser` olarak ayarlayarak bu davranışı özelleştirebilirsiniz:
<Tabs>
<TabItem value="standalone" label="Bağımsız ekran" default>

```dart showLineNumbers title="Flutter"
final onboardingView = await AdaptyUI().createOnboardingView(
  onboarding: onboarding,
  externalUrlsPresentation: AdaptyWebPresentation.externalBrowser, // default – AdaptyWebPresentation.inAppBrowser
);

try {
  await onboardingView.present();
} on AdaptyError catch (e) {
  // handle the error
} catch (e) {
  // handle the error
}
```

</TabItem>
<TabItem value="embedded" label="Gömülü widget">
```dart showLineNumbers title="Flutter"
AdaptyUIOnboardingPlatformView(
  onboarding: onboarding,
  externalUrlsPresentation: AdaptyWebPresentation.externalBrowser, // default – AdaptyWebPresentation.inAppBrowser
  onDidFinishLoading: (meta) {
  },
  onDidFailWithError: (error) {
  },
  onCloseAction: (meta, actionId) {
  },
  onPaywallAction: (meta, actionId) {
  },
  onCustomAction: (meta, actionId) {
  },
  onStateUpdatedAction: (meta, elementId, params) {
  },
  onAnalyticsEvent: (meta, event) {
  },
)
```

</TabItem>
</Tabs>
## Güvenli alan dolgularını devre dışı bırakma (Android) \{#disable-safe-area-paddings-android\}

Varsayılan olarak Android cihazlarda, onboarding görünümü durum çubuğu ve gezinme çubuğu gibi sistem UI öğelerinden kaçınmak için güvenli alan dolgularını otomatik olarak uygular. Ancak bu davranışı devre dışı bırakmak ve düzen üzerinde tam kontrol sahibi olmak istiyorsanız, uygulamanıza bir boolean kaynağı ekleyerek bunu yapabilirsiniz:

1. `android/app/src/main/res/values` konumuna gidin. `bools.xml` dosyası yoksa oluşturun.

2. Aşağıdaki kaynağı ekleyin:

```xml
<resources>
    <bool name="adapty_onboarding_enable_safe_area_paddings">false</bool>
</resources>
```
Bu değişikliklerin uygulamanızdaki tüm onboarding'ler için geçerli olduğunu unutmayın.