Skip to main content

Adhere Flutter SDK

This page is not linked from the navigation and describes a package that is not part of the current SDK release set. The maintained mobile SDKs are Android and iOS. Treat what follows as unverified against a shipping build.
A powerful Flutter package for Adhere identity verification and facial liveness detection. Our SDK delivers a drop-in UI that seamlessly orchestrates BVN/NIN verification (Nigeria), Document parsing (International), and video-based ML Kit facial liveness challenges.

Features

  • Drop-in UI Integrationsdk.open(context) launches our polished UI module natively on top of your app.
  • Dynamic Client Configuration — Fetches available document types securely from your Adhere Dashboard rules.
  • One-Time Use Policy System — Verifications are securely bound utilizing a single-use parameter.
  • Identity Onboarding — Verifies BVN & NIN directly via national APIs, or scans Passports & National ID Cards.
  • Liveness Detection: A passive face scan (blink plus natural head movement) with a 20 second cap, backed by Google ML Kit. The actions are never named to the user.

Installation

In your app’s pubspec.yaml:
Then run flutter pub get.

Platform Setup

Android

In android/app/src/main/AndroidManifest.xml, ensure your app has permission to access the camera:
Set the minimum SDK version in android/app/build.gradle:

iOS

In ios/Runner/Info.plist, declare the camera usage description:

The simplest way to integrate our SDK is to use the full wrapper widget. Upon launching, the SDK will automatically prompt the user for their Client ID.
The SDK handles everything automatically:
  1. Shows an initial Client ID input screen.
  2. Identifies the user’s origin and prompts for ID types (BVN, NIN, Passport, etc).
  3. Requests camera permissions.
  4. Guides the user through liveness face capturing.
  5. Securely revokes the session to enforce single-use policy.

Advanced Usage (Headless Architecture)

If you are building your own UI from scratch instead of using our wrapper, you drive the endpoints yourself. The Client ID is the one from your dashboard: the same permanent value the wrapper uses:

Supported Liveness Actions

Our engine can dynamically challenge users based on your Dashboard rules: