Kullanım
Temel Örnek
import 'package:flutter/material.dart';
import 'package:trustchex_flutter_sdk/trustchex_flutter_sdk.dart';
class VerificationScreen extends StatelessWidget {
final String sessionId;
final String baseUrl;
const VerificationScreen({
super.key,
required this.sessionId,
required this.baseUrl,
});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Doğrulama')),
body: TrustchexView(
sessionId: sessionId,
baseUrl: baseUrl,
onCompleted: () {
Navigator.of(context).pop();
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Doğrulama başarıyla tamamlandı!'),
backgroundColor: Colors.green,
),
);
},
onError: (error) {
Navigator.of(context).pop();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Doğrulama hatası: $error'),
backgroundColor: Colors.red,
),
);
},
),
);
}
}
Özellikler
| Özellik | Tip | Zorunlu | Açıklama |
|---|---|---|---|
baseUrl | String | ✅ | API temel URL'si |
sessionId | String | ❌ | Oturum tanımlayıcısı |
branding | TrustchexBranding | ❌ | Renkler ve logo |
locale | TrustchexLocale | ❌ | Dil (en, tr) |
onCompleted | VoidCallback | ❌ | Başarı geri çağırma |
onError | Function(String) | ❌ | Hata geri çağırma |
onDocumentRead | Function(DocumentReadResult) | ❌ | Belge okunduğunda çağrılır (NFC veya OCR) |
Belge Okuma Olayı
onDocumentRead geri çağırması, belge verisi mevcut olur olmaz tetiklenir — başarılı bir NFC çip okumasından veya başarılı bir kamera OCR taramasından hemen sonra. Kaynaktan bağımsız olarak birleşik bir DocumentReadResult nesnesi alır.
import 'package:trustchex_flutter_sdk/trustchex_flutter_sdk.dart';
TrustchexView(
baseUrl: 'https://your-api.com',
sessionId: 'session-123',
onDocumentRead: (result) {
final document = result.document;
print(document.documentType.name); // "passport" | "id"
print(document.issuingCountry); // "DEU"
print(document.nationality); // "DEU"
print(document.documentNumber); // "C01X00T478"
print(document.personalNumber); // "8512310074" | null
print(document.lastName); // "MÜLLER"
print(document.firstName); // "JÜRGEN KARL"
print(document.sex.name); // "male" | "female" | "unspecified" | "unknown"
print(document.dateOfBirth); // "1985-03-10" (ISO 8601)
print(document.dateOfExpiry); // "2030-11-05" (ISO 8601)
},
onCompleted: () => print('Done'),
onError: (error) => print('Error: $error'),
)
DocumentReadResult
class DocumentReadResult {
final DocumentData document;
final DocumentName name;
final DocumentFaceImage? face;
}
class DocumentData {
final ScannedDocumentType documentType; // .passport | .idCard
final String issuingCountry; // 3-letter ICAO code, e.g. "TUR"
final String nationality;
final String documentNumber;
final String? personalNumber;
final String lastName; // En iyi ad bilgisi, örn. "MÜLLER"
final String firstName; // En iyi ad bilgisi, örn. "JÜRGEN"
final DocumentSex sex; // .male | .female | .unspecified
final String? dateOfBirth; // ISO 8601, e.g. "1990-05-15"
final String? dateOfExpiry; // ISO 8601, e.g. "2028-03-01"
}
class DocumentName {
final String rawLast; // MRZ ASCII surname
final String rawFirst; // MRZ ASCII given name
final String displayLast; // Best Unicode form
final String displayFirst; // Best Unicode form
final DocumentNameSource source; // .dg11 | .reverseTable | .raw
}
class DocumentFaceImage {
final String data; // Base64-encoded image
final String mimeType; // e.g. "image/jpeg"
}
İsim Kaynakları
| Kaynak | Açıklama |
|---|---|
dg11 | NFC çipindeki DG11 dosyasından okunan tam basılı isim (UTF-8). En yüksek doğruluk. |
reverseTable | ICAO 9303 ters transliterasyon tablosu ile yeniden oluşturuldu (ör. OE→Ö, UE→Ü). Bilinen ülkeler için uygulanır. |
raw | Dönüşüm yapılmadı — görüntülenen isim ham MRZ ASCII değeriyle aynı. |
Markalaşma ile
TrustchexView(
sessionId: sessionId,
baseUrl: 'https://api.trustchex.com',
locale: TrustchexLocale.tr,
branding: const TrustchexBranding(
logoUrl: 'https://trustchex.com/logo.png',
primaryColor: Color(0xFF1E40AF),
secondaryColor: Color(0xFFF8FAFC),
tertiaryColor: Color(0xFFDC2626),
),
onCompleted: () {
Navigator.of(context).pop();
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Doğrulama başarıyla tamamlandı!'),
backgroundColor: Colors.green,
),
);
},
onError: (error) {
Navigator.of(context).pop();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Doğrulama hatası: $error'),
backgroundColor: Colors.red,
),
);
},
)
Derin Bağlantılar (İsteğe Bağlı)
Derin bağlantı işlevselliği, bağımsız bir uygulama yayınlamak istiyorsanız isteğe bağlı bir özelliktir. SDK ile derin bağlantıları işlemek için uygulamanızda derin bağlantıları yapılandırmanız ve gelen URL'leri işlemek için gerekli kancaları kurmanız gerekir.