Keyboard class
Widget Keyboard must be placed near the top of the widget tree, where it has the
same size as the screen, for example, in MaterialApp.builder, above any Scaffold.
For example:
MaterialApp(
builder: (BuildContext context, Widget? child) =>
Keyboard(
iOsCloseOnTap: true,
iOsCloseOnSwipe: true,
iOsRemoveFocusOnTap: true,
child: ...,
),
),
The constructor parameters are:
- Pass iOsCloseOnTap true to close the keyboard when the user taps an empty area of the screen, on the iOS.
- Pass iOsCloseOnSwipe true to close the keyboard when the user swipes down from just above the keyboard edge, on the iOS.
- iOsRemoveFocusOnTap controls whether focus is also removed from any focused element when the keyboard is dismissed by a tap, on the iOS.
- iOsRemoveFocusOnSwipe controls whether focus is also removed from any focused element when the keyboard is dismissed by a swipe, on the iOS.
- Pass androidCloseOnTap true to close the keyboard when the user taps an empty area of the screen, on the Android.
- Pass androidCloseOnSwipe true to close the keyboard when the user swipes down from just above the keyboard edge, on the Android.
- androidRemoveFocusOnTap controls whether focus is also removed from any focused element when the keyboard is dismissed by a tap, on the Android.
- androidRemoveFocusOnSwipe controls whether focus is also removed from any focused element when the keyboard is dismissed by a swipe, on the Android.
The default is false for all the above parameters.
Recommendation
On the iOS, it's common for the keyboard to auto-dismiss when the user taps outside it or swipes down from just above the keyboard edge. Usually, when the keyboard is dismissed by a tap, the focused element also loses focus, but when it's dismissed by a swipe, the focused element retains focus (and may re-open the keyboard if it's tapped).
On the Android, the default is that the keyboard only closes when the user taps the back button or executes the back gesture.
For these reasons, the recommended configuration is:
Keyboard(
iOsCloseOnTap: true,
iOsCloseOnSwipe: true,
iOsRemoveFocusOnTap: true,
child: ...
)
Other features
-
Keyboard.isOpen and Keyboard.isClosed can be used to check whether the keyboard is currently open or not. Example usage:
bool isKeyboardOpen = Keyboard.isOpen(context); -
Use Keyboard.open and Keyboard.close to programmatically open and close the system keyboard. Example usage:
// Forces the keyboard to open. Keyboard.open(); // Forces the keyboard to close, and removes focus from any focused element. Keyboard.close(); // Forces the keyboard to close. Keeps focus on any focused element, so the keyboard may re-open if that element is tapped again. Keyboard.close(removeFocus: false);
See also:
- KeyboardSwitch for a widget that conditionally renders its child based on the keyboard open/close state.
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- Keyboard
- Available extensions
Constructors
- Keyboard({Key? key, required Widget child, bool iOsCloseOnTap = false, bool iOsCloseOnSwipe = false, bool iOsRemoveFocusOnTap = false, bool iOsRemoveFocusOnSwipe = false, bool androidCloseOnTap = false, bool androidCloseOnSwipe = false, bool androidRemoveFocusOnTap = false, bool androidRemoveFocusOnSwipe = false})
-
const
Properties
- androidCloseOnSwipe → bool
-
final
- androidCloseOnTap → bool
-
final
- androidRemoveFocusOnSwipe → bool
-
final
- androidRemoveFocusOnTap → bool
-
final
- child → Widget
-
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- iOsCloseOnSwipe → bool
-
final
- iOsCloseOnTap → bool
-
final
- iOsRemoveFocusOnSwipe → bool
-
final
- iOsRemoveFocusOnTap → bool
-
final
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- makeRefreshable → Widget
-
Available on Widget?, provided by the WidgetExtension extension
Make your any widget refreshable with RefreshIndicator on topno setter - runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
addMaterialWidget(
) → Material -
Available on Widget, provided by the GenericExtensions extension
-
addTooltipWidget(
String toolTip) → Tooltip -
Available on Widget, provided by the GenericExtensions extension
-
animate(
{Key? key, List< Effect> ? effects, AnimateCallback? onInit, AnimateCallback? onPlay, AnimateCallback? onComplete, bool? autoPlay, Duration? delay, AnimationController? controller, Adapter? adapter, double? target, double? value}) → Animate -
Available on Widget, provided by the AnimateWidgetExtensions extension
Wraps the target Widget in an Animate instance, and returns the instance for chaining calls. Ex.myWidget.animate()is equivalent toAnimate(child: myWidget). -
borderRadius(
[BorderRadiusGeometry? borderRadius]) → Widget -
Available on Widget, provided by the GenericExtensions extension
-
boxDecoration(
[BoxDecoration? boxDecoration]) → Widget -
Available on Widget, provided by the GenericExtensions extension
-
center(
{double? heightFactor, double? widthFactor}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
set parent widget in center -
colorFilter(
[ColorFilter? colorFilter]) → Widget -
Available on Widget, provided by the GenericExtensions extension
set parent widget in center -
cornerRadiusWithClipRRect(
double radius) → ClipRRect -
Available on Widget?, provided by the WidgetExtension extension
add corner radius -
cornerRadiusWithClipRRectOnly(
{int bottomLeft = 0, int bottomRight = 0, int topLeft = 0, int topRight = 0}) → ClipRRect -
Available on Widget?, provided by the WidgetExtension extension
add custom corner radius each side -
createElement(
) → StatefulElement -
Creates a StatefulElement to manage this widget's location in the tree.
inherited
-
createState(
) → State< Keyboard> -
Creates the mutable state for this widget at a given location in the tree.
override
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of DiagnosticsNode objects describing this node's
children.
inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node.
inherited
-
expand(
{int flex = 1}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
add Expanded to parent widget -
fit(
{BoxFit? fit, AlignmentGeometry? alignment}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
add FittedBox to parent widget -
flexible(
{int flex = 1, FlexFit? fit}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
add Flexible to parent widget -
launch<
T> (BuildContext context, {bool isNewTask = false, PageRouteAnimation? pageRouteAnimation, Duration? duration, String? routeName, Object? routeArguments}) → Future< T?> -
Available on Widget?, provided by the WidgetExtension extension
Launch a new screen -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
onTap(
Function? function, {BorderRadius? borderRadius, Color? splashColor, Color? hoverColor, Color? highlightColor, Color? focusColor, WidgetStateProperty< Color?> ? overlayColor}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
add tap to parent widget -
opacity(
{required double opacity, int durationInSecond = 1, Duration? duration}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
add opacity to parent widget -
paddingAll(
double padding) → Padding -
Available on Widget?, provided by the WidgetExtension extension
return padding all -
paddingBottom(
double bottom) → Padding -
Available on Widget?, provided by the WidgetExtension extension
return padding bottom -
paddingDirectional(
{double start = 0.0, double top = 0.0, double end = 0.0, double bottom = 0.0}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
-
paddingLeft(
double left) → Padding -
Available on Widget?, provided by the WidgetExtension extension
return padding left -
paddingOnly(
{double top = 0.0, double left = 0.0, double bottom = 0.0, double right = 0.0}) → Padding -
Available on Widget?, provided by the WidgetExtension extension
return custom padding from each side -
paddingRight(
double right) → Padding -
Available on Widget?, provided by the WidgetExtension extension
return padding right -
paddingSymmetric(
{double vertical = 0.0, double horizontal = 0.0}) → Padding -
Available on Widget?, provided by the WidgetExtension extension
return padding symmetric -
paddingTop(
double top) → Padding -
Available on Widget?, provided by the WidgetExtension extension
return padding top -
rotate(
{required double angle, bool transformHitTests = true, Offset? origin}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
add rotation to parent widget -
scale(
{required double scale, Offset? origin, AlignmentGeometry? alignment, bool transformHitTests = true}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
add scaling to parent widget -
toDiagnosticsNode(
{String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep.
inherited
-
tooltip(
{required String msg}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
-
toString(
{DiagnosticLevel minLevel = DiagnosticLevel.info}) → String -
A string representation of this object.
inherited
-
toStringDeep(
{String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String -
Returns a string representation of this node and its descendants.
inherited
-
toStringShallow(
{String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a one-line detailed description of the object.
inherited
-
toStringShort(
) → String -
A short, textual description of this widget.
inherited
-
translate(
{required Offset offset, bool transformHitTests = true, Key? key}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
add translate to parent widget -
validate(
{Widget value = const SizedBox()}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
Validate given widget is not null and returns given value if null. -
visible(
bool visible, {Widget? defaultWidget}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
set visibility -
withHeight(
double height) → SizedBox -
Available on Widget?, provided by the WidgetExtension extension
With custom height -
withRoundedCorners(
{Color backgroundColor = whiteColor, BorderRadius borderRadius = const BorderRadius.all(Radius.circular(8.0)), LinearGradient? gradient, BoxBorder? border, List< BoxShadow> ? boxShadow, DecorationImage? decorationImage, BoxShape boxShape = BoxShape.rectangle}) → Container -
Available on Widget?, provided by the WidgetExtension extension
-
withScroll(
{ScrollPhysics? physics, EdgeInsetsGeometry? padding, Axis scrollDirection = Axis.vertical, ScrollController? controller, DragStartBehavior dragStartBehavior = DragStartBehavior.start, bool? primary, required bool reverse}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
-
withShaderMask(
List< Color> colors, {BlendMode blendMode = BlendMode.srcATop}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
Wrap with ShaderMask widget -
withShaderMaskGradient(
Gradient gradient, {BlendMode blendMode = BlendMode.srcATop}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
Wrap with ShaderMask widget Gradient -
withShadow(
{Color bgColor = whiteColor, Color shadowColor = Colors.black12, dynamic blurRadius = 10.0, dynamic spreadRadius = 0.0, Offset offset = const Offset(0.0, 0.0), LinearGradient? gradient, BoxBorder? border, DecorationImage? decorationImage, BoxShape boxShape = BoxShape.rectangle}) → Container -
Available on Widget?, provided by the WidgetExtension extension
-
withSize(
{double width = 0.0, double height = 0.0}) → SizedBox -
Available on Widget?, provided by the WidgetExtension extension
With custom height and width -
withTooltip(
{required String msg}) → Widget -
Available on Widget?, provided by the WidgetExtension extension
Validate given widget is not null and returns given value if null. -
withVisibility(
bool visible, {Widget? replacement, bool maintainAnimation = false, bool maintainState = false, bool maintainSize = false, bool maintainSemantics = false, bool maintainInteractivity = false}) → Visibility -
Available on Widget?, provided by the WidgetExtension extension
set widget visibility -
withWidth(
double width) → SizedBox -
Available on Widget?, provided by the WidgetExtension extension
With custom width
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
close(
{bool removeFocus = true}) → void - Closes only the system keyboard and removes focus from any element that has focus.
-
isClosed(
BuildContext context) → bool - Whether the keyboard is currently open. Requires a Keyboard ancestor. Example usage:
-
isOpen(
BuildContext context) → bool - Whether the keyboard is currently open. Requires a Keyboard ancestor. Example usage:
-
open(
) → void