Отображение онбординга во Flutter SDK

Если вы настроили онбординг с помощью билдера, вам не нужно беспокоиться о том, как отрисовывать его в коде Flutter-приложения для отображения пользователю. Такой онбординг содержит и то, что должно показываться, и то, как это должно выглядеть.

Прежде чем начать, убедитесь, что:

  1. Вы установили Adapty Flutter SDK версии 3.8.0 или новее.
  2. Вы создали онбординг.
  3. Вы добавили онбординг в плейсмент.

Adapty Flutter SDK предоставляет два способа отображения онбордингов:

  • Отдельный экран

  • Встроенный виджет

Отображение как отдельный экран

Чтобы отобразить онбординг как отдельный экран, вызовите метод onboardingView.present() на объекте onboardingView, созданном методом createOnboardingView. Каждый view можно использовать только один раз. Если нужно показать онбординг повторно, снова вызовите createOnboardingView, чтобы создать новый экземпляр onboardingView.

Повторное использование того же onboardingView без пересоздания может привести к ошибке AdaptyUIError.viewAlreadyPresented.

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

Закрытие онбординга

Чтобы программно закрыть онбординг, используйте метод dismiss():

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

Настройка стиля отображения на iOS

Настройте способ отображения онбординга на iOS, передав параметр iosPresentationStyle в метод present(). Параметр принимает значения AdaptyUIIOSPresentationStyle.fullScreen (по умолчанию) или AdaptyUIIOSPresentationStyle.pageSheet.

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

Встроить в иерархию виджетов

Чтобы встроить онбординг в существующее дерево виджетов, используйте виджет AdaptyUIOnboardingPlatformView напрямую в иерархии виджетов 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) {
  },
)

Чтобы platform view работал на Android, убедитесь, что ваша MainActivity наследуется от FlutterFragmentActivity:

class MainActivity : FlutterFragmentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }
}

Загрузчик во время онбординга

При показе онбординга вы можете заметить короткий экран загрузки между сплэш-экраном и онбордингом, пока инициализируется базовое представление. Это можно обработать по-разному в зависимости от ваших потребностей.

Управление сплэш-экраном с помощью onDidFinishLoading

Этот подход доступен только при встраивании онбординга как виджета. Для отображения в виде отдельного экрана он недоступен.

Рекомендуемый кроссплатформенный подход — держать экран загрузки или собственный оверлей видимым до тех пор, пока онбординг полностью не загрузится, а затем скрыть его вручную.

При использовании встроенного виджета наложите свой виджет поверх него и скройте оверлей, когда срабатывает onDidFinishLoading:

AdaptyUIOnboardingPlatformView(
  onboarding: onboarding,
  onDidFinishLoading: (meta) {
    // Hide your custom splash screen or overlay here
  },
  // ... other callbacks
)

Кастомизация нативного загрузчика

Этот подход зависит от платформы и требует поддержки нативного UI-кода. Не рекомендуется, если вы не поддерживаете отдельные нативные слои в своём приложении.

Если нужно кастомизировать сам загрузчик по умолчанию, его можно заменить платформо-специфичными макетами. Этот подход требует отдельных реализаций для Android и iOS:

  • iOS: добавьте AdaptyOnboardingPlaceholderView.xib в ваш Xcode-проект
  • Android: создайте adapty_onboarding_placeholder_view.xml в res/layout и определите там заглушку

Настройка способа открытия ссылок в онбординге поддерживается начиная с Adapty SDK v3.15.1.

По умолчанию ссылки в онбординге открываются во встроенном браузере. Это обеспечивает бесшовный пользовательский опыт: веб-страницы отображаются прямо внутри приложения, и пользователям не нужно переключаться между приложениями.

Если вы хотите открывать ссылки во внешнем браузере, настройте это поведение, установив параметр externalUrlsPresentation в значение AdaptyWebPresentation.externalBrowser:

Отключение отступов безопасной зоны (Android)

По умолчанию на Android-устройствах вид онбординга автоматически добавляет отступы безопасной зоны, чтобы избежать перекрытия системными элементами интерфейса — строкой состояния и панелью навигации. Если вы хотите отключить это поведение и самостоятельно управлять макетом, добавьте булев ресурс в своё приложение:

  1. Перейдите в android/app/src/main/res/values. Если файл bools.xml отсутствует, создайте его.

  2. Добавьте следующий ресурс:

<resources>
    <bool name="adapty_onboarding_enable_safe_area_paddings">false</bool>
</resources>

Обратите внимание, что изменения применяются глобально ко всем онбордингам в вашем приложении.