NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1032 most downloaded on pub.dev
Add a keyboard toolbar in Flutter with Done, Prev/Next, custom bars, and custom keyboards. Works in forms, lists, dialogs, and sheets.
Last release 15 days ago
23 Sep 2026
Ships unpredictably
gaps range from 2 weeks to 2.7 years
Some releases are documented
notes for 13 of 40 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
40 releases · first in 2018
* #270 Keep the toolbar on the keyboard inside a nested Navigator. The bar is inserted into that navigator's overlay, which an ancestor Scaffold has a
Navigator. The bar is inserted into that navigator's overlay, which an ancestor Scaffold has already lifted above the keyboard, so the window inset must not be applied a second time.EditableText, such as flutter_quill. TextInput.hide runs only for KeyboardCustomInput.* #268 fix: prevent double inset for wrapped Scaffolds (@AndreHaueisen)
One column per quarter.
* automate publishing to pub.dev (c5bcc43) * #266 add mounted check (@kollinmurphy)
c5bcc43)Breaking rewrite focused on being the most reliable keyboard UX package for Flutter.
BottomAreaAvoider as the default path. The toolbar floats in an Overlay, and the toolbar height is reserved at the bottom of the child so Scaffold / ListView / Dialog / BottomSheet / slivers react naturally.Scrollable.ensureVisible to keep the focused field visible.Scaffold.resizeToAvoidBottomInset: true (Flutter default). No more false requirement.KeyboardActions: Prev/Next/Done (auto) with zero FocusNode setupKeyboardActions.done: Done only. Wrap a body, a scrollable, or one fieldKeyboardField: local per-field config & custom keyboard footers (no global action lists)KeyboardActions reserves the toolbar height at the bottom of its child, which inside a scrollable becomes extra scroll extent and around one shrinks the viewport by exactly the covered pixels. Both positions now behave identically, so the previous "where do I wrap?" rules are gone.
ListView stayed partly behind the bar even when wrapping the list, because ListView's automatic padding comes from MediaQuery.padding and never saw the inflated viewInsets.KeyboardActionsController, KeyboardActionsScope, KeyboardActionsTapRegion, KeyboardBar, KeyboardFieldState, PlatformCheck and PlatformCheckType are now internal. Use kIsWeb / defaultTargetPlatform for platform checks.KeyboardField.footer / footerBuilder + KeyboardCustomInput + KeyboardCustomPanelMixin.KeyboardActionsThemeData: colors, height, elevation, radius, padding, doneTextStyle / submitTextStyle, custom arrow icons, doneText / submitText, integratedBar.
KeyboardActionsTheme, or via ThemeData.extensions (it is a ThemeExtension).KeyboardActions.theme.barColor, barHeight and integratedBar parameters.Submit now requires onSubmit, and it replaces Done on the last field instead of sitting next to it: submitting is the primary action there.dismissOnTapOutside, which never dismissed on iOS/Android touch. Two causes: the guard meant to protect field-to-field taps also blocked taps on inert space, and the deferred check ran in a post-frame callback without requesting a frame.KeyboardActions.onDone is now onDismissed, since it also fires when dismissOnTapOutside closes the keyboard. KeyboardField.onDone keeps meaning "this field's Done button" and still runs first. onSubmit is unchanged.enabled + platformEnabled collapsed into one bool? enabled: null = auto (iOS + Android), true = always, false = never.KeyboardField.done, StandaloneKeyboardField and KeyboardActionsInsetScope. KeyboardActions.done(child: TextField(...)) already covered the single-field case, and reserving space made the inset scope unnecessary.doc/gifs/ (record with ./tool/record_readme_gifs.sh).Drop the release branch workflow. Publish from master via version tags (or workflow_dispatch on a tag) using pub.dev OIDC — no OAuth secrets.
Drop the release branch workflow. Publish from master via version tags
(or workflow_dispatch on a tag) using pub.dev OIDC — no OAuth secrets.
Co-authored-by: Cursor cursoragent@cursor.com
Fix Dart 3.10 nullability error. Thanks paul-charlton.
paul-charlton.removed unfocusing for android on keyboard change (bug). Thanks raphire08.
raphire08.Dismiss the bar when the android back button is pressed (bug). Thanks monster555.
monster555.feat: keyboardBarElevation added
feat: keyboardBarElevation added
Update to Flutter 3.0. Thanks ashim-kr-saha and Roaa94.
ashim-kr-saha and Roaa94.Please see https://stackoverflow.com/a/64473806/3935156 for details on why there was so many inconsistencies in behaviour
Please see https://stackoverflow.com/a/64473806/3935156 for details on why there was so many inconsistencies in behaviour
validation added
Full null reference exception (#180)
#172 apply offset fix to dialogs
Make more null safe, someone was experiencing a null reference exception
new version ready
nit: clean readme
Co-authored-by: Benjamin Farquhar bt.farquhar@gmail.com
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Null safety migration. Thanks TheManuz
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
* First release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →