document_camera_frame 2.4.0
document_camera_frame: ^2.4.0 copied to clipboard
Flutter package for capturing and cropping document images with a customizable camera interface.
2.4.0 #
Added #
DocumentCameraUIModeenum — support for five distinct UI modes:defaultMode,minimal,overlay,kiosk, andtextExtract.uiModeparameter onDocumentCameraFrame(fully backward compatible).- Comprehensive UI Mode Matrix:
defaultMode: Standard full-featured experience.minimal: Bare-bones UI with four corner indicators and action buttons.overlay: Focuses on the document frame and screen title.kiosk: Automated flow for unattended environments (auto-capture only).textExtract: Optimized layout for OCR-focused workflows.
- Replaced
MinimalCornerIndicatorswith standardizedCornerBoxcomponent across all modes for better consistency. - Smooth Flip Fading: Implemented opacity-based fading transitions during frame flipping for a more premium feel.
- Refined Minimal Mode Constraints: Capture animation, image cropping, and previews are now strictly pixel-perfectly bounded by the corner indicators.
- Matched Preview Aesthetics: Synchronized border radius between
CornerBoxindicators and captured image previews for a seamless visual experience.
Notes #
- Default mode behavior is unchanged — no existing consumers are affected.
- Instructions are fully supported in minimal mode but hidden by default (minimal mode always suppresses instruction overlays).
2.3.0 #
added:
- Export Format Support: Choose output format for captured documents.
outputFormatparameter: Select fromDocumentOutputFormat.jpg(default),png,pdf,webp, ortiff.pdfPageSizeparameter: Configure PDF page size (PdfPageSize.a4orletter) when using PDF format.imageQualityparameter: Control compression quality (1-100) for JPG and WebP formats.- PDF Generation: Multi-page PDF support for two-sided documents with configurable page sizes.
DocumentCaptureData.pdfPath: New field containing the path to generated PDF when using PDF format.PdfGenerationService: New exported service for custom PDF generation from images.
- TIFF Format Support: Added automatic JPG preview generation for TIFF files to resolve "Invalid image data" errors in Flutter UI.
- TIFF OCR Fix: OCR extraction now uses internal JPG previews to bypass ML Kit's lack of native TIFF support.
DocumentCaptureDataEnhancements:- Added
frontPreviewPathandbackPreviewPath: Access displayable (JPG) versions of documents even when the primary output is TIFF. - Added
hasFrontTextandhasBackTextgetters: Simplified logic for checking if OCR extracted any content.
- Added
initialFlashModeproperty: Configure the starting flash mode for the camera (auto, off, on, torch).- Library Export: Re-exported
FlashModefrom the core library to simplify integration for consumers.
changed:
- Alignment Reset: The alignment guidance (green frame) now correctly resets when tapping "Retake".
- PDF Export Optimization: Automatically deletes temporary JPG files after PDF generation to minimize local storage usage.
- Example App Enhancement: Added direct file opening for generated PDFs using
open_file. - Image Processing: Updated
ImageProcessingServiceto support multiple output formats. - Dependencies: Added
pdfpackage (^3.11.2) for PDF generation. Downgradedimagepackage to ^4.5.4 for compatibility.
notes:
- All new parameters are optional with sensible defaults.
- Existing code continues to work without modifications (JPG is default).
- PDF generation only occurs when
outputFormatis set toDocumentOutputFormat.pdf. - See
example/lib/export_format_example.dartfor usage examples of all formats.
2.2.1 2.2.3 #
- Update Readme.md
- Update metadata
- Update example
2.2.0 #
added:
- Major internal refactoring: Separated UI and business logic for better maintainability.
- Improved Architecture:
- UI split into
DocumentCameraPreviewLayerandDocumentCameraOverlayLayer. - State management and business logic extracted into
DocumentCameraLogic.
- UI split into
- New styling parameters:
showDetectionStatusTextinDocumentCameraFrame: Toggle live detection guidance text.showInstructionTextinDocumentCameraInstructionStyle: Toggle top instruction text.topPositionandrightPositioninDocumentCameraSideIndicatorStyle: Precise control over side indicator placement.
- Enhanced Internal Services:
DocumentDetectionServiceOptimization:- Added Letterbox Correction: Accounts for camera sensor aspect ratio vs display area to ensure precise frame alignment.
- Added Best-Candidate Selection: Intelligently picks the best document candidate based on aspect ratio and area.
- Added Live Guidance Engine: Generates real-time user hints ("Move closer", "Move right", etc.) via
detectionStatusNotifier. - Added Screen-Space Mapping: Automatically maps detection coordinates to screen pixels for overlay rendering, including mirroring support for front cameras.
ImageConverterServiceRobustness:- Hardened conversion paths for
BGRA8888(iOS) andNV21/YUV420(Android). - Added Stride (BytesPerRow) Handling to prevent image skewing/distortion on various hardware.
- Hardened conversion paths for
changed:
DocumentCameraFramewidget is now more efficient and easier to customize.- Refactored internal components for a cleaner codebase.
2.1.0 2.1.1 #
added:
- On-device OCR (text extraction): Optional text recognition via
enableExtractText. enableExtractTextparameter: Whentrue, runs OCR after capture and setsDocumentCaptureData.frontOcrTextandbackOcrTextbefore calling the save callback (no API key or internet required).OcrServiceclass: Reusable on-device OCR using Google ML Kit (Latin script; English and other Latin-based languages). Exported from the package for custom use.DocumentCaptureData.frontOcrTextandDocumentCaptureData.backOcrText: Optional extracted text whenenableExtractTextis true.- Dependency:
google_mlkit_text_recognitionfor OCR.
changed:
onDocumentSaved: New preferred callback name (replacesonBothSidesSaved). Fits both one-sided documents (e.g. passport) and two-sided (e.g. ID). Callback receivesDocumentCaptureDatawith image paths and, whenenableExtractTextis true,frontOcrTextandbackOcrText.onBothSidesSavedis deprecated; useonDocumentSaved. The deprecated callback still works for backward compatibility.DocumentCaptureDatamodel: Now holds optionalfrontOcrTextandbackOcrText; doc comment updated for one-sided vs two-sided use.
notes:
- OCR supports Latin script only (English, etc.). Arabic is not supported by ML Kit's on-device model.
- Android:
minSdk21+ required. iOS: platform 15.5+ and armv7 exclusion recommended for ML Kit.
2.0.1 2.0.4 #
- Update Readme.md
- Update metadata
2.0.0 #
added:
- Modular styling system with dedicated style classes:
DocumentCameraAnimationStyleDocumentCameraFrameStyleDocumentCameraButtonStyleDocumentCameraTitleStyleDocumentCameraSideIndicatorStyleDocumentCameraProgressStyleDocumentCameraInstructionStyle
- Auto-capture functionality via
enableAutoCaptureparameter. - Error handling with
onCameraErrorcallback. - Enhanced animation using
FrameCaptureAnimation. - Performance boost using
ValueListenableBuilderwithchild. - Complete Dart documentation for all style properties.
changed:
- BREAKING: Replaced individual style params with grouped
styleobjects. - BREAKING: Constructor now uses style classes (
buttonStyle,animationStyle, etc.). - Optimized animation rendering and reduced rebuilds.
- Refactored code for better structure and performance.
migration_guide: before: |
DocumentCameraFrame(
captureButtonStyle: buttonStyle,
captureButtonAlignment: Alignment.center,
captureButtonPadding: EdgeInsets.all(16),
capturingAnimationDuration: Duration(seconds: 1),
)
after: |
DocumentCameraFrame(
buttonStyle: DocumentCameraButtonStyle(
captureButtonStyle: buttonStyle,
captureButtonAlignment: Alignment.center,
captureButtonPadding: EdgeInsets.all(16),
),
animationStyle: DocumentCameraAnimationStyle(
capturingAnimationDuration: Duration(seconds: 1),
),
)
1.0.9 1.0.4 #
- Update
examples.gif - Update Readme.md
- Update metadata
1.0.3 #
- Update metadata
1.0.2 #
- Update metadata
1.0.0 #
added:
- Two-sided document capture: front and back.
- Callbacks:
onFrontCaptured,onBackCaptured,onBothSidesSaved. - Custom titles and instructions per side.
- Navigation controls and side indicator UI.
- Animated progress bar and frame flip transitions.
- Camera switching via button.
changed:
- BREAKING: Replaced
onSavedwithonBothSidesSaved. - Refactored to support two-sided logic and flow.
- Enhanced transitions and layout handling.
fixed:
- Better capture reset flow.
- Improved multi-side state handling.
- Camera-related error recovery.
0.1.6 #
- Update metadata.
0.1.5 #
features:
- Added camera switch icon. fixes:
retakeButtonTextandsaveButtonTextnow display correctly.- Custom camera selection (not hardcoded to ID 0).
0.1.4 #
- Update Readme.md.
0.1.3 #
- Update metadata.
0.1.2 #
- Added
showCloseButtonflag. - Frame animation duration reduced to
400ms.
0.1.0 #
- Redesigned
DocumentCameraFrameUI. - Added:
captureOuterCircleRadiuscaptureInnerCircleRadius
- Smooth container open animation (bottom to top).
- Documentation updated accordingly.
0.0.9 #
- Add
example.gif - Update Readme.md.
0.0.8 #
- Add
example.mp4 - Update Readme.md.
0.0.7 to 0.0.2 #
- README and metadata updates.
0.0.3 #
- Fixed deprecated usage in
DocumentCameraFramePainter:- Changed
Colors.black.withOpacity(0.5)toColors.black.withAlpha(127).
- Changed
0.0.1 #
- Initial release.