Tổng quan
econtract_task_module là Flutter plugin cho phép nhúng toàn bộ luồng Danh sách công việc của econtractid vào ứng dụng Flutter của bạn bằng một hàm duy nhất — chạy trên baseUrl và accessToken của bạn.
Một hàm duy nhất
openTaskList() mở thẳng luồng: danh sách → chi tiết → xem PDF → ký số eKYC → từ chốiNative đóng gói sẵn
Bridge eKYC (Android AAR + iOS xcframework) đi kèm và tự đăng ký
Chạy trên hạ tầng của bạn
Truyền
baseUrl + token lúc chạy; token giữ in-memory, không đụng dữ liệu app hostThoát về host
signOut / back / 401 đều quay về app của bạn kèm callback — không hiện màn login riêng
Kiến trúc
Plugin gồm hai phần:- Dart (
lib/) — luồng Task List và API công khaiEContractModule - Native bridge eKYC —
android/(SDK qua Maven repo bundled) vàios/(EContractIDSDK.xcframeworkvendored), tự đăng ký quaGeneratedPluginRegistrant
Yêu cầu
Không cần Firebase. Module đã loại bỏ Firebase — host không cần
google-services.json hay GoogleService-Info.plist.Cài đặt
1. Thêm dependency
Trongpubspec.yaml của app host (phân phối qua private git repo):
2. Lấy package
Đây là plugin, không phải package thường. Native eKYC được kéo theo và tự đăng ký khi bạn thêm dependency — không cần copy bridge hay sửa
MainActivity/AppDelegate để add plugin.Tích hợp
Gọi module
Ở bất kỳ đâu cóBuildContext:
openTaskList tự khởi tạo (Hive + DI + eKYC) một lần, không gọi runApp, và đẩy route chứa toàn bộ luồng lên navigator của host.
Cấu hình host — Android
eKYC SDK dùng Hilt và camera/NFC. Các mục sau phải nằm ở app host. a.android/settings.gradle
android/app/build.gradle
@HiltAndroidApp
FlutterFragmentActivity
AndroidManifest.xml
Cấu hình host — iOS
a. Deployment target ≥ 13 Trongios/Podfile: platform :ios, '13.0' (hoặc cao hơn), và đặt cùng giá trị IPHONEOS_DEPLOYMENT_TARGET trong Xcode.
b. ios/Runner/Info.plist
pod install tự kéo plugin và EContractIDSDK.xcframework (vendored). Plugin tự đăng ký — không sửa AppDelegate.Hành vi thoát luồng
Module không hiển thị màn login của riêng nó — đăng nhập và làm mới token do app host lo.
Luồng token
Module không tự đăng nhập. Backend của bạn cấp token quapartner-login:
Trên production, access token có hiệu lực 15 ngày và hệ thống không có endpoint refresh (môi trường development cấu hình dài hơn nhiều). Cách xử lý duy nhất khi hết hạn là backend gọi lại
partner-login. Xem Vòng đời token.API Reference
LớpEContractModule là điểm vào công khai duy nhất. Import package:econtract_task_module/econtract_module.dart.
openTaskList
ensureInitialized
updateAccessToken
Khắc phục sự cố
Câu hỏi thường gặp
Vì sao code native nằm trong module?
Vì sao code native nằm trong module?
Module là Flutter plugin (không phải package thường). Nhờ đó thư mục
android/ + ios/ chứa bridge eKYC được biên dịch vào app host và tự đăng ký — bạn chỉ cần thêm 1 dependency.Có cần Firebase không?
Có cần Firebase không?
Không. Module đã loại
firebase_core/firebase_remote_config và local notification. Host không cần google-services.json / GoogleService-Info.plist.Vì sao Android phải có Hilt?
Vì sao Android phải có Hilt?
eKYC SDK dùng Hilt nội bộ —
EKycSdkActivity cần @HiltAndroidApp trên Application của host. Đây là ràng buộc của SDK, plugin không thể tự thêm Application class.Token có bị ghi xuống máy không?
Token có bị ghi xuống máy không?
Token truyền vào module được giữ in-memory theo phiên, gắn vào header mỗi request, và xoá khi thoát luồng. Module không ghi token xuống thiết bị và không đụng tới dữ liệu lưu trữ của app host.
baseUrl áp cho những request nào?
baseUrl áp cho những request nào?
Toàn bộ request trong phiên của module (qua interceptor) và cả đường tải PDF riêng. Khi thoát luồng, mọi thứ trở về mặc định.
Có bắt buộc tích hợp cả Android lẫn iOS?
Có bắt buộc tích hợp cả Android lẫn iOS?
Không — tích hợp nền tảng nào thì cấu hình host nền tảng đó. Cả hai đều đã được kiểm chứng build trong
example/.Có giấu được source Dart không?
Có giấu được source Dart không?
Không. Flutter package/plugin phân phối dưới dạng source Dart. Private git repo chỉ giới hạn ai được truy cập, không giấu được nội dung source. Muốn giấu hoàn toàn cần host native + Flutter module đã biên dịch — ngoài phạm vi hiện tại.
Checklist trước khi lên production
Xem thêm
Xác thực API
Lấy access token qua partner-login
Nhúng web (iframe)
Tích hợp cho nền tảng web

