pin_plus_keyboard 3.0.2
pin_plus_keyboard: ^3.0.2 copied to clipboard
A flutter package that gives you custom input fields and a custom keyboard for one time password widgets, transaction pin widgets and simple login widgets.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
3.0.2 #
Added #
- Random Keyboard Layout Feature: Optional security feature that shuffles the positions of numbers 1-9 on the keyboard
enableRandomKeyboard: Enable/disable random keyboard layout (default:false)reshuffleOnClear: Reshuffle keyboard when PIN is cleared (default:false)reshuffleOnResume: Reshuffle keyboard when app comes to foreground (default:false)- Provides shoulder surfing protection by making it harder for observers to determine which numbers are being pressed
- Zero button (0) always remains in the center position for consistency
- Automatic reshuffling on widget initialization when enabled
Documentation #
- Added comprehensive example in README showing how to use random keyboard layout
- Added security benefits explanation for the random keyboard feature
- Updated API reference with new random keyboard parameters
3.0.1 #
Fixed #
- Fixed issue where PIN input could not be properly cleared using
pinInputController.clear() - Made
textproperty private with getter to prevent direct assignment that doesn't trigger UI updates - Fixed animation reset when PIN is cleared - fill animations now properly reset
- Improved synchronization between controller and widget state when clearing PIN
Changed #
PinInputController.textis now a private field with a public getter. Useclear()orchangeText()methods instead of direct assignment- Enhanced
clear()method to only notify listeners if text was actually non-empty (performance improvement)
Documentation #
- Added comprehensive example in README showing how to properly clear PIN input
- Updated API documentation to clarify that
clear()is the recommended method - Added warning about not directly assigning to
textproperty
3.0.0 #
Added #
Accessibility
- Full screen reader support with semantic labels
- Keyboard navigation support
- High contrast mode support
- ARIA-like attributes for all interactive elements
- Semantic announcements for input changes
Animations & Micro-interactions
- Input field fill animations with customizable curves and duration
- Shake animation on validation errors
- Success checkmark animation on completion
- Button press ripple effects (Material ripple)
- Loading states during submission with CircularProgressIndicator
- Configurable animation curves and durations
Material 3 Enhancements
- Material 3 design token support (ColorScheme, TextTheme)
- Dynamic color support (Material You) via ColorScheme.fromSeed
- Adaptive theming based on system preferences
- Better elevation and surface color handling using Material 3 tokens
- Automatic color derivation from theme when useMaterial3 is enabled
Platform-Specific Improvements
- iOS/Android-specific styling and behaviors
- Platform-appropriate haptic patterns (different intensities per platform)
- Platform-specific animations (iOS spring, Android material)
- Automatic platform detection and styling
Biometric Integration
- Face ID / Touch ID / Fingerprint support via BiometricService
- Optional biometric authentication button in keyboard
- Fallback to PIN when biometrics fail
- Platform-agnostic biometric interface
- Support for local_auth package (optional dependency)
Security Features
- Auto-clear after inactivity timeout
- Optional screenshot blocking (Android only)
- Secure input handling (no logging of sensitive data)
- Rate limiting for failed attempts with configurable thresholds
- SecurityService for managing security features
Advanced Customization
- Gradient support for buttons and inputs
- Custom animation curves parameter
- Custom input field builders for complete control
- Custom keyboard button builders
- Theme presets (iOS-style, Android-style, Material 3, Minimal, Dark)
- PinThemePresets class with ready-to-use configurations
Performance Optimizations
- RepaintBoundary for keyboard buttons to reduce repaints
- More const constructors where possible
- Efficient rebuilds with optimized state management
- Lazy loading for large customizations
Developer Experience
- Better error messages and debugging information
- Comprehensive API documentation
- Enhanced example app with all new features
- Type-safe enums and parameters
Changed #
- BREAKING: Default
enableAnimationsis nowtrue(was implicitly false) - BREAKING: Default
useMaterial3is nowtrue(was implicitly false) - BREAKING: Default
enableKeyboardNavigationis nowtrue(was implicitly false) - BREAKING: Default
usePlatformSpecificStylingis nowtrue(was implicitly false) - Improved color handling with Material 3 design tokens
- Enhanced haptic feedback with platform-specific patterns
- Better error handling with rate limiting support
- More consistent theming across all components
Fixed #
- Improved accessibility for screen readers
- Better focus management for keyboard navigation
- Fixed color handling in Material 3 mode
- Improved animation performance
- Better error message display and handling
Security #
- Added rate limiting to prevent brute force attacks
- Added screenshot blocking support (Android)
- Added auto-clear timeout for security
- Improved secure input handling
2.0.6 - 2025-11-23 #
Added #
- Haptic feedback support for better user experience on supported devices
- Custom validation function (
validator) for PIN validation onDigitEnteredcallback to track individual digit entries- Comprehensive code comments throughout the codebase
- Unit tests for
PinInputControllerand widget tests - Contributing guidelines (CONTRIBUTING.md)
- Enhanced example app with modern Flutter patterns
Changed #
- Upgraded Flutter SDK requirement from >=3.0.0 to >=3.24.0
- Upgraded Dart SDK requirement from >=3.0.0 to >=3.4.0
- Updated
flutter_lintsfrom ^3.0.0 to ^5.0.0 - Improved error handling with validation support
- Enhanced documentation with better examples
- Modernized example app with Material 3 and const constructors
Fixed #
- Improved validation flow to prevent submission of invalid PINs
- Better error message handling and display