flutter_password_input 0.7.0
flutter_password_input: ^0.7.0 copied to clipboard
A customizable password text field widget with Caps Lock detection, visibility toggle, force English input mode, and comprehensive theming support.
0.7.0 #
DEPS
flutter_ime: ^3.0.0(was^2.1.4). 3.0.0 rewrites the plugin as a pure-Dart FFI package: no native code, no plugin registration, and no Flutter dependency of its own. For this package that means the generated plugin registrant no longer referencesflutter_imeand a consumer app compiles no native IME code — nothing here calls anything the plugin's C++/Swift layer used to provide.
Breaking — SDK floor
- Dart floor raised
3.1.0→3.4.0.flutter_ime3.0.0 bridges its macOS input-source observer withNativeCallable.keepIsolateAlive, which arrived in Dart 3.4. The Flutter floor is unchanged at3.13.0. This is the only breaking part of the upgrade, and it is what makes it a minor bump rather than a patch.
No API or behaviour change here
flutter_ime3.0.0 keeps the same public API — every function has the same name, parameters and return type — soKeyboardInputMonitoris untouched and no call site changed. The keyboard-integration tests pass unchanged against the new version through the same platform-interface seam.
Worth knowing (macOS, upstream)
- 3.0.0 fixes
flutter_ime's macOS layout classification: non-QWERTY English layouts (Dvorak, Colemak, British, Australian, Canadian) now report as English, where 2.x saw only ABC and US. A field forcing English no longer drags those users onto ABC. - On macOS the Caps Lock warning can now flicker when the user switches language:
the Caps Lock key doubles as the input-source switch there, so a language change
briefly toggles the lock and
onCapsLockChangedreports it. This is upstream behaviour, not something this package can filter — there is no state that separates the two, only duration.
0.6.3 #
DEPS
just_tooltip: ^0.4.4(was^0.4.3). Upstream lands two fixes: an empty-message tooltip no longer suppresses the tooltips nested around it (#46), and a tooltip already on screen now rebuilds to follow its ownmessage,theme,direction, oralignmentwhen they change mid-show (#47). Nojust_tooltipAPI changed and the Flutter/Dart floor is unchanged at3.13.0/3.1.0.
Behaviour change — narrow, tooltip mode only
- The suppression fix (#46) is unreachable here, for the same reason as 0.6.0/0.6.2: it is claimed from the hover path (
MouseRegion.onEnter) or from a message toggling empty↔non-empty, and these tooltips passenableHover: false(noMouseRegionis built) and carry fixed, non-empty messages that never toggle. Nothing inWarningTooltipLayoutcan reach it. - The config-follow fix (#47) is reachable.
WarningTooltipLayout.build()rebuilds eachJustTooltipwith freshly-resolvedtooltipTheme/ alignment / message, and 0.4.4'sdidUpdateWidgetnow marks a shown overlay dirty on any such rebuild. So if a caps-lock or paste warning tooltip's theme, alignment, or text changes while it is on screen, the visible tooltip now updates on the next frame; before 0.4.4 it kept the stale overlay until the warning was hidden and shown again. This only affects an already-displayed tooltip whose configuration actually changes mid-show — a latent correctness improvement, not a regression.
0.6.2 #
DEPS
just_tooltip: ^0.4.3(was^0.4.2). Upstream fixes a hover bug: moving the cursor from the tooltip body back onto its child left an armed hide timer, which then faded the tooltip out while the pointer was resting on the child, with no furtheronEnterto revive it.
No behaviour change here
- That fix is unreachable from this package, for the same reason 0.6.0's nested-suppression path was:
WarningTooltipLayoutpassesenableHover: falseto both tooltips unconditionally.just_tooltipgates the whole hover path on it — it builds noMouseRegion, and its hover reconciler short-circuits before the repaired scheduler call. The warnings are driven only byJustTooltipController, so nothing in 0.4.3 can reach them. - No
just_tooltipAPI changed between 0.4.2 and 0.4.3 (the only other diff is a doc comment oninteractive), and the Flutter/Dart floor is unchanged at3.13.0/3.1.0.
docs
WarningTooltipTheme.interactiveandWarningTooltipTheme.waitDurationare documented as having no effect, in both the README table and their dartdoc.just_tooltipreads both only along its hover path, and these tooltips passenableHover: false, so no pointer event ever reaches the scheduler. Previously the README advertised them as "Keep tooltip visible on hover" and "Delay before tooltip appears". They stay in the API so the theme remains a superset ofjust_tooltip's options.showDurationis not affected and keeps working:JustTooltip.showTooltip()starts the auto-hide countdown explicitly for a programmatic show.
0.6.1 #
DEPS
just_tooltip: ^0.4.2(was^0.4.0). Upstream anchors a tooltip to the visible part of its child, re-aims it whenever the child moves, and hides it once the child is clipped out of sight.
Behaviour change for WarningDisplayMode.tooltip
- The caps-lock and paste warnings are shown through
JustTooltipController, so they inherit the new tracking. A warning no longer stays where its field used to be when a surrounding view scrolls, resizes, or reflows — it re-aims at the visible part of the field. It does not move rigidly with the field: measured in a 400px horizontal viewport, scrolling by 60px moved the field's centre by 60px and the warning by 32px, because the warning aims at the visible centre and is still clamped byscreenMargin. - A warning whose field scrolls entirely out of view now hides, where before it stayed on screen pointing at nothing. Showing it again is a fresh
controller.show().
Requires Flutter 3.13
- Minimum Flutter is now
3.13.0(Dart3.1.0), up from3.3.0.just_tooltip0.4.2 walksRenderObject.parent, which wasAbstractNode?— a type with nodescribeApproximatePaintClip— before Flutter 3.13. - This is a correction, not a new restriction. The
just_tooltip: ^0.4.0constraint in 0.6.0 already resolves 0.4.2 under caret rules, so 0.6.0's>=3.3.0floor is a promise it cannot keep. Anyone on an older Flutter is broken today; 0.6.1 simply stops advertising support it never had.
0.6.0 #
BREAKING
- Upgrade
just_tooltipfrom^0.3.0to^0.4.0— the publicPasswordTextField/WarningTooltipThemeAPI is unchanged, and nojust_tooltipAPI was removed, but a caret on0.xpins the minor, so apps that depend onjust_tooltipdirectly must move to^0.4.0
note
just_tooltip 0.4.0lets a nested tooltip suppress its ancestors.WarningTooltipLayoutdoes nest — the caps-lock tooltip wraps the paste tooltip wraps the field — but the suppression path is unreachable here: only a tooltip withenableHoverclaims its ancestors, and only a claimed ancestor is suppressed. Both tooltips setenableHover: falseand are driven entirely by their controllers, so the inner one never claims and a programmaticshow()on the outer one always wins. Verified, not assumed: see the new tests below.- Warning tooltips also pick up
just_tooltip's fix for tooltips laid out in anOverlaythat does not fill the window from its origin — aPasswordTextFieldunder a nestedNavigatoror an embedded Flutter view had its warning tooltip displaced by the Overlay's offset. TooltipAnchor(new injust_tooltip 0.4.0) is not re-exported. These tooltips are anchored to the field and never to a pointer — hover is disabled.
test
- Add
warning_tooltip_layout_test.dart(7 tests), drivingWarningTooltipLayoutthrough eachPasswordFieldStatusand asserting which tooltip is shown, plus the two facts that keep the nested pair safe — the caps-lock tooltip encloses the paste tooltip, and neither reacts to hover or tap. The existing tooltip coverage (renders in tooltip display mode without error) only asserted that the widget builds; nothing checked that either tooltip ever appeared, so a regression in the nested pair would have passed silently. Both invariant tests are mutation-checked: enabling hover, or swapping the nesting order, makes them fail.
0.5.0 #
BREAKING
- Upgrade
just_tooltipfrom^0.2.5to^0.3.0— the publicPasswordTextField/WarningTooltipThemeAPI is unchanged, but apps that depend onjust_tooltipdirectly must move to^0.3.0
chore
- Adapt
WarningTooltipLayoutto thejust_tooltip0.3.0 controller model —JustTooltipControlleris now an attach-based command source (no longer aChangeNotifier), so the internaldispose()calls are removed; the paste controller is still recreated on repeat paste to replay its animation - Retire the now-obsolete tooltip controller lifecycle tracker and test group (the dispose-balance invariant no longer exists)
0.4.2 #
fix
- Field status now honors its documented priority (
disabled > customError > capsLock > pasteBlocked > checked/unchecked > none) instead of whichever event fired last:- A blocked paste no longer overrides an active
hasCustomError - A disabled field stays
disabledeven whenhasCustomErroris set
- A blocked paste no longer overrides an active
- Initial
hasCustomError/isCheckedare now reflected on the first frame (previously applied only after the value changed) - Dispose internal
JustTooltipControllerinstances to stop aChangeNotifiermemory leak in tooltip mode (on dispose, on mode switch, and on repeated paste warnings)
feat
- Add
WarningTooltipTheme.defaultsstatic const exposing default tooltip values (parity withPasswordTextFieldTheme.defaults)
chore
- Internal refactor of
PasswordTextField— no behavior change- Isolate all
flutter_imeinteraction (Caps Lock detection, English-input enforcement) behind aKeyboardInputMonitorseam - Extract warning rendering into
WarningMessageLayoutandWarningTooltipLayoutwidgets, sojust_tooltipis used only by the tooltip widget - Make
_resolveActiveWarningthe single source of truth for field status - Split
build()into_buildTooltipMode/_buildMessageMode - Group status border colors into
_StatusColorsrecord typedef - Extract
_applyCapsLockStatefrom duplicated Caps Lock state handlers - Extract
_buildOutlineBorderhelper from repeated focused/enabled/disabled border construction - Simplify
WarningAlignment→ tooltip direction/alignment mapping (10-case → 5-case using||patterns) - Consolidate hardcoded
'Caps Lock is on'/'Paste is disabled'fallback strings into private constants - Replace inline tooltip default fallbacks with
WarningTooltipTheme.defaultsmerge
- Isolate all
- Raise line coverage to ~99% (100% across the widget, keyboard monitor, and both warning layout widgets)
deps
- Upgrade
flutter_imefrom^2.1.3to^2.1.4
0.4.1 #
feat
- Add
WarningAlignment.topStartTargetCenter,topEndTargetCenter,bottomStartTargetCenter,bottomEndTargetCenter— arrow dynamically points toward the center of the target widget - Upgrade
just_tooltipfrom^0.2.3to^0.2.5
0.4.0 #
BREAKING
- Rename
PasswordFieldWarningtoPasswordFieldStatus— update all references in prefix/suffix builders and switch expressions PasswordFieldWidgetBuilderparameter renamed fromwarningtostatus
feat
- Add
PasswordFieldStatus.checkedandPasswordFieldStatus.unchecked— builders receive these states whenisCheckedistrue/false - Add
isChecked(bool?) toPasswordTextField—nullapplies no checked styling,true/falsechanges border color accordingly; not intended to be used withhasCustomError - Add
checkedBorderColortoPasswordTextFieldTheme(falls back toColors.green) - Add
uncheckedBorderColortoPasswordTextFieldTheme(falls back toerrorBorderColor)
0.3.4 #
feat
- Add
PasswordFieldWarning.disabled— prefix/suffix builders now receivedisabledstate whenenabled: false - Add
disabledBorderColortoPasswordTextFieldThemefor customizable disabled border color (falls back toborderColorwith 50% opacity) - Add
disabledTextStyletoPasswordTextFieldThemefor customizable disabled text style (falls back totextStyle) - Visibility toggle button is now properly disabled when
enabled: false
0.3.3 #
deps
- Upgrade
flutter_imefrom^2.1.1to^2.1.3(fix Caps Lock detection miss after app switch)
0.3.2 #
fix
- Fix
hasCustomErrorstate being lost when focus leaves and returns to the field
0.3.1 #
deps
- Upgrade
just_tooltipfrom^0.2.1to^0.2.3(bug fix)
0.3.0 #
BREAKING
- Replace
prefixWidgetwithprefixWidgetBuilder(PasswordFieldWidgetBuilder?) — builder receives(BuildContext, PasswordFieldWarning)so icons can react to warning state - Replace
suffixWidgetwithsuffixWidgetBuilder(PasswordFieldWidgetBuilder?) — same builder signature
feat
- Add
PasswordFieldWarningenum (none,capsLock,pasteBlocked,customError) representing the active warning - Add
PasswordFieldWidgetBuildertypedef for prefix/suffix builders - Border and floating-label color now uses last-triggered warning semantics instead of fixed priority
- When an active warning turns off, the field falls back to the next still-active warning via
_resolveActiveWarning()
0.2.2 #
feat
- Add
directionandalignmenttoWarningTooltipThemefor theme-level tooltip positioning (overrides per-warning alignment when set) - Add
waitDurationtoWarningTooltipThemefor delayed tooltip appearance - Add
showDurationtoWarningTooltipThemefor auto-hiding tooltips after a set time - Re-export
TooltipDirectionandTooltipAlignmentenums for direct use
0.2.1 #
feat
- Add
prefixIconConstraintsandsuffixIconConstraintstoPasswordTextFieldfor controlling icon size
0.2.0 #
feat
- Add
hasCustomErrortoPasswordTextFieldfor external error state control (default: false)- Changes border color and floating label color when active
- Works in both focused and unfocused states
- Add
customErrorBorderColortoPasswordTextFieldTheme(falls back toerrorBorderColor)
0.1.8 #
fix
- Fix tooltip alternating issue when both CapsLock and paste warnings are active at the same position
- Paste tooltip now takes priority over CapsLock tooltip; CapsLock tooltip restores after paste warning expires
feat
- Paste tooltip animation replays on repeated Ctrl+V press
- Ignore key repeat events when holding Ctrl+V (only triggers once per key press)
0.1.7 #
feat
- Add tooltip animation parameters to
WarningTooltipTheme:animation: Animation style (none,fade,scale,slide,fadeScale,fadeSlide,rotation)animationCurve: Custom easing curvefadeBegin: Starting opacity for fade animationsscaleBegin: Starting scale for scale animationsslideOffset: Slide distance ratio for slide animationsrotationBegin: Starting rotation for rotation animations
- Re-export
TooltipAnimationenum for direct use
deps
- Upgrade
just_tooltipfrom^0.2.0to^0.2.1
0.1.6 #
feat
- Add
interactiveoption toWarningTooltipThemeto control whether tooltip stays visible on hover (default: true)
deps
- Upgrade
just_tooltipfrom^0.1.7to^0.2.0 - Migrate tooltip styling parameters to new
JustTooltipThemeAPI (breaking change in just_tooltip 0.2.0)
0.1.5 #
feat
- Add
WarningDisplayModeenum (message,tooltip) to switch warning display between inline text and tooltip - Add
warningDisplayModetoPasswordTextField(default:message) - Tooltip mode uses
just_tooltippackage with per-warning independent positioning viacapsLockWarningAlignmentandpasteWarningAlignment - Add
WarningTooltipThemeclass for full tooltip styling customization:backgroundColor,borderRadius,padding,elevation,boxShadowborderColor,borderWidthtextStyle,offset,crossAxisOffset,screenMarginanimationDurationshowArrow,arrowBaseWidth,arrowLength,arrowPositionRatio
- Add
tooltipThemetoPasswordTextFieldTheme - Paste warning now hides when focus is lost (consistent with Caps Lock warning behavior)
deps
- Add
just_tooltip: ^0.1.7
0.1.4 #
feat
- Add
WarningAlignmentenum with 6 positions (topLeft,topCenter,topRight,bottomLeft,bottomCenter,bottomRight) - Add
capsLockWarningAlignmentandpasteWarningAlignmenttoPasswordTextField(default:bottomLeft) - Add
pasteWarningBorderColortoPasswordTextFieldThemefor independent paste warning border/text color (falls back toerrorBorderColor) - Paste warning now changes border color and floating label color
0.1.3 #
feat
- Add paste warning message when paste is blocked (
disablePaste: true)showPasteWarning: Whether to show warning (default: true)pasteWarningText: Custom warning message (default: 'Paste is disabled')pasteWarningDuration: Auto-hide duration (default: 3 seconds)onPasteBlocked: Callback when paste attempt is blocked- Warning auto-hides when user starts typing
- Add
pasteWarningStyletoPasswordTextFieldTheme
0.1.2 #
feat
- Add
disablePasteoption to block paste functionality (default: false)- Blocks both keyboard shortcuts (Ctrl+V/Cmd+V) and context menu paste
0.1.1 #
feat
- Add
forceEnglishInputoption to force English keyboard input when focused (default: true)- Windows: Disables IME when focused, re-enables when unfocused
- macOS: Switches to English keyboard and maintains it while focused
- Add
ExcludeFocuswrapper to visibility toggle button to prevent focus stealing
chore
- Add macOS platform support to example app
- Update
flutter_imedependency version
0.1.0 #
feat
- Add
PasswordTextFieldwidget with obscured text input - Add Caps Lock detection using
flutter_imepackage (Windows, macOS supported) - Add password visibility toggle button
- Add
prefixWidgetandsuffixWidgetsupport - Add
PasswordTextFieldThemefor comprehensive styling customization - Add
merge()andcopyWith()methods for theme manipulation - Add interactive playground example app
docs
- Add detailed English documentation for all public APIs