IDmeta Flutter Plugin

Flutter plugin for integrating IDmeta identity verification into your Flutter application.


Requirements

  • Flutter >=3.44.1
  • Dart >=3.12.1 <4.0.0 (bundled with Flutter 3.44.1+)

Android

Use your app’s normal Flutter Android setup: compileSdk = flutter.compileSdkVersion, minSdk / targetSdk from flutter.*, and an Android Gradle Plugin (AGP) version that matches Flutter’s Android build requirements and the AGP ↔ Gradle compatibility table.

This plugin is built against Android compileSdk 37. If your Flutter toolchain still reports flutter.compileSdkVersion below 37, set compileSdk to at least 37 until you upgrade Flutter—for example compileSdk = Math.max(flutter.compileSdkVersion as int, 37) in Groovy, or compileSdk = maxOf(flutter.compileSdkVersion, 37) in Kotlin DSL. The host app must use minSdk ≥ 24 (for example minSdk = Math.max(flutter.minSdkVersion as int, 24) when Flutter’s default is lower).

Build on macOS or Windows. On Linux build machines (including Linux CI runners), flutter pub get currently fails for apps that use this plugin.

If your Trust Flow includes Location Intelligence or ML Score, add ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION to your app’s AndroidManifest.xml; without them Android denies location without showing a prompt.

iOS

  • iOS builds use Swift Package Manager for several plugin dependencies (including the V2 document reader).
  • Minimum deployment target: iOS 16.0
  • Add camera, photo library, and location usage descriptions to your app’s Info.plist (see example/ios/Runner/Info.plist for reference)
  • If your iOS app uses CocoaPods instead of Swift Package Manager, enable the permissions in your Podfile's GCC_PREPROCESSOR_DEFINITIONS: PERMISSION_CAMERA=1, plus PERMISSION_LOCATION_WHENINUSE=1 if your Trust Flow includes Location Intelligence or ML Score. Without them, iOS denies the permission without showing a prompt.
  • The face detection library has no Apple Silicon simulator build, so the app does not run on Apple Silicon Mac simulators with iOS 26 or later. Test on a real iPhone, or on an iOS 18 (or earlier) simulator.

Installation

Install the plugin from pub.dev:

flutter pub add idmeta_flutter

Or add manually to pubspec.yaml:

dependencies:
  idmeta_flutter: ^2.0.0

Then run:

flutter pub get

Import

import 'package:idmeta_flutter/idmeta_flutter.dart';

Quick Start

Call IdmetaFlutter.startVerification to launch the identity verification flow. The runnable app under example/ provides a form where you can enter the user token, trust flow ID, and client ID before starting verification.

import 'package:flutter/material.dart';
import 'package:idmeta_flutter/idmeta_flutter.dart';

void main() {
  runApp(const MyApp());
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('IDmeta Plugin Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            IdmetaFlutter.startVerification(
              context: context,
              userToken: '<USER_API_TOKEN>',
              trustFlowId: 123,
              clientId: '<CLIENT_ID>',
              metadata: {
                'referenceId': '1001',
              },
            );
          },
          child: const Text('Start Verification'),
        ),
      ),
    );
  }
}

Parameters

Parameter Type Description
context BuildContext Build context used to navigate into the verification flow.
userToken String The user API token retrieved from the user profile.
trustFlowId int ID of the verification trust flow to launch.
clientId String The client ID retrieved from the user profile page.
metadata Map<String, dynamic>? Optional key-value JSON sent back to your webhook.
licenseKeys IdmetaLicenseKeys? Optional capture licences issued for your app ID. See Your own capture licences.

Your own capture licences

Document capture licences are tied to an app ID. By default the plugin loads them from IDmeta for your clientId. If the licences on your IDmeta account were issued for a different app ID, pass licences issued for your app:

IdmetaFlutter.startVerification(
  // ...
  licenseKeys: const IdmetaLicenseKeys(
    documentVerification: '<DOCUMENT_VERIFICATION_LICENSE>',
    documentVerificationV2: '<DOCUMENT_VERIFICATION_V2_LICENSE>',
  ),
);

Every key is optional. Any key you leave out is still loaded from IDmeta.


Example Metadata

metadata: {
  'referenceId': '1001',
  'userId': 'USER-123',
  'environment': 'staging',
}

Platform Configuration

Configure your IDmeta account and backend to obtain the values used above:

  1. Create a Trust Flow and retrieve Trust Flow ID — Creating a Trust Flow
  2. Communication between IDmeta and your backend server via webhook — Adding Webhooks to Trust Flow
  3. Getting API Tokens — App Tokens
  4. Webhook responses follow the same structure as the IDmeta API — API Reference

Notes

  • The plugin requires an active internet connection during verification.
  • Metadata values are returned in webhook callbacks for tracking and reconciliation purposes.

Support

For integration support or issues, please contact the IDmeta team.


License

This plugin package is licensed under the MIT License.

IDmeta verification services require a valid IDmeta account, userToken, trustFlowId, and applicable customer agreement. Available verification features depend on your subscription and trust-flow configuration. Reseller, OEM, or multi-application deployment may require a separate written agreement with IDmeta.

Bundled third-party native SDKs are governed by their respective vendor licenses and your IDmeta license entitlements.

Libraries

fingerprint
Fingerprint capture contract and device registry for trust-flow integration.
idmeta_flutter
IDmeta identity verification SDK for Flutter.