vlens 0.1.7
vlens: ^0.1.7 copied to clipboard
VLens Flutter SDK provides seamless integration for biometric verification.
VLens Flutter SDK Documentation #
Overview #
VLens Flutter SDK provides seamless integration for biometric verification and identity scanning in your Flutter applications. This SDK supports National ID scanning and liveness detection.
Installation #
To install VLens, add the following dependency to your pubspec.yaml file:
dependencies:
vlens: latest_version
Run the following command to fetch the package:
flutter pub get
Usage #
Import the Package #
import 'package:vlens/vlens.dart';
Initialize the SDK #
To initialize VLens, configure the SDK settings and call VLensManager().init().
final sdkConfig = SdkConfig(
transactionId: 'your_transaction_id',
isLivenessOnly: false,
isNationalIdOnly: false,
logoPath: "your_asset_path",
env: EnvironmentConfig(
apiBaseUrl: "https://api.vlenseg.com",
accessToken: "your_access_token",
refreshToken: "your_refresh_token",
apiKey: "your_api_key",
tenancyName: "your_tenancy_name",
),
defaultLocale: "en",
colors: ColorsConfig(
light: ColorConfig(
accent: "#4E5A78",
primary: "#397374",
secondary: "#FF4081",
background: "#FEFEFE",
dark: "#000000",
light: "#FFFFFF",
),
dark: ColorConfig(
accent: "#FFC107",
primary: "#2196F3",
secondary: "#FF4081",
background: "#000000",
dark: "#FFFFFF",
light: "#000000",
),
),
errorMessages: [
ApiError(
errorCode: 101,
errorMessageEn: "Network error",
errorMessageAr: "\u062E\u0637\u0623 \u0641\u064A \u0627\u0644\u0634\u0628\u0643\u0629",
),
],
onSuccess: (extractedData) {
// Handle success
Logger().d("verification success ${extractedData?.idFrontData?.name}");
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("Success Verified!")),
);
},
onFailure: (String errorCode, String errorMsg) {
// Handle failure
Logger().d("Main verification failed due to: $errorMsg, Code: $errorCode");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(errorMsg)),
);
},
detectionRetryCounter: 5,
getExtractedData: true,
disableAutoCapture: false
);
VLensManager().init(context, sdkConfig);
To make it work on Android 13 and up, set this to false in the Android manifest:
android:enableOnBackInvokedCallback="false"
Example Project #
import 'package:flutter/material.dart';
import 'package:vlens/vlens.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'VLens Flutter SDK Demo',
home: const VLensDemoScreen(),
);
}
}
class VLensDemoScreen extends StatefulWidget {
const VLensDemoScreen({super.key});
@override
State<VLensDemoScreen> createState() => _VLensDemoScreenState();
}
class _VLensDemoScreenState extends State<VLensDemoScreen> {
final TextEditingController _transactionIdController = TextEditingController();
final TextEditingController _accessTokenController = TextEditingController();
bool _isDataComplete = false;
void _getStarted() {
final sdkConfig = SdkConfig(
transactionId: _transactionIdController.text,
isLivenessOnly: false,
isNationalIdOnly: false,
logoPath: "your_asset_path",
env: EnvironmentConfig(
apiBaseUrl: "https://api.vlenseg.com",
accessToken: _accessTokenController.text,
refreshToken: "your-refresh-token",
apiKey: "your-api-key",
tenancyName: "your-tenancy-name",
),
defaultLocale: "en",
colors: ColorsConfig(
light: ColorConfig(
accent: "#4E5A78",
primary: "#397374",
secondary: "#FF4081",
background: "#FEFEFE",
dark: "#000000",
light: "#FFFFFF",
),
dark: ColorConfig(
accent: "#FFC107",
primary: "#2196F3",
secondary: "#FF4081",
background: "#000000",
dark: "#FFFFFF",
light: "#000000",
),
),
errorMessages: [
ApiError(
errorCode: 101,
errorMessageEn: "Network error",
errorMessageAr: "خطأ في الشبكة",
),
],
onSuccess: (extractedData) {
// Handle success
Logger().d("verification success ${extractedData?.idFrontData?.name}");
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text("Success Verified!")),
);
},
onFailure: (String errorCode, String errorMsg) {
// Handle failure
Logger().d("Main verification failed due to: $errorMsg, Code: $errorCode");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(errorMsg)),
);
},
detectionRetryCounter: 5,
getExtractedData: true,
disableAutoCapture: false
);
VLensManager().init(context, sdkConfig);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('VLens Flutter SDK Demo')),
body: Center(
child: ElevatedButton(
onPressed: _isDataComplete ? _getStarted : null,
child: const Text('Get Started'),
),
),
);
}
}
Configuration Options #
SdkConfig #
transactionId(String): Unique identifier for the transaction.isLivenessOnly(Boolean): Enables or disables liveness detection mode.isNationalIdOnly(Boolean): Enables or disables national ID scanning mode.logoPath(String?): Path to the logo image.- Example: "assets/images/your_logo_name.png".
- Default value : VLens logo.
env(EnvironmentConfig): Contains API-related configurations.apiBaseUrl(String): Base URL for the VLens API.accessToken(String): Access token for authentication.refreshToken(String): Token for refreshing access when expired.apiKey(String): API key for the VLens service.tenancyName(String): Name of the tenant using the service.
defaultLocale(String): Specifies the default language (e.g.,"en"for English,"ar"for Arabic).colors(Colors): Theming configuration for light and dark modes.light(ColorConfig): Color palette for light mode.dark(ColorConfig): Color palette for dark mode.
errorMessages(List: Custom error messages.errorCode(Int): Error code returned from the API.errorMessageEn(String): Error message in English.errorMessageAr(String): Error message in Arabic.
retryCounter(Int): Specifies the number of allowed retries for detection before failing.- default value is = 5
getExtractedData(Boolean): Iftrue, the SDK will return extracted data after successful scanning.disableAutoCapture(Boolean): Iftrue, the sdk will disable the auto capture for national id front and back (default valuefalse).onSuccess((extractedData) -> {}): Lambda triggered when the initialization succeeds. Returns an extractData object.onFailure((errorCode, errorMsg) -> {}): Lambda triggered when the initialization fails. Returns an error code and error message.
ExtractData #
-
isDigitalIdentityVerified: Boolean -
isVerificationProcessCompleted: Boolean -
deviceInfo: String -
user: {
-id: Int
-name: String
-surname: String
-fullName: String
-userName: String
-emailAddress: String
-phoneNumber: String
-idNumber: String
-address: String
} -
idFrontData: {
-nameEnglish: String
-firstNameEnglish: String
-lastNamesEnglish: String
-name: String
-address: String
-firstName: String
-lastName: String
-govern: String
-idKey: String
-address1: String
-address2: String
-addressEnglish: String
-address1English: String
-address2English: String
-governEnglish: String
-city: String
-district: String
-dateOfBirth: String
-idNumber: String
-gender: String
-clientTransactionId: String
-requestId: String
-transactionId: String
} -
idBackData: {
-maritalStatus: String
-job: String
-jobTitle: String
-religion: String
-husbandName: String
-releaseDate: String
-idExpiry: String
-maritalStatusEnglish: String
-religionEnglish: String
-genderEnglish: String
-husbandNameEnglish: String
-jobEnglish: String
-jobTitleEnglish: String
-idNumber: String
-gender: String
-clientTransactionId: String
-requestId: String
-transactionId: String
}
Error Handling #
Define custom error messages using ApiError:
ApiError(
errorCode: 101,
errorMessageEn: "Network error",
errorMessageAr: "\u062E\u0637\u0623 \u0641\u064A \u0627\u0644\u0634\u0628\u0643\u0629",
);
Support #
For questions and support, contact the VLens team at support@vlens.com.