Native Text Input for Flutter

A text input widget built using the native UITextView on iOS and EditText on Android. For text view, please refer to flutter-native-text-view.

Android support is added in v2 🎉🎉🎉

For existing project(s) using v1, please refer to migration guide here.

Installation

Follow the instructions from https://pub.dev/packages/flutter_native_text_input/install

Why you should use this

Many mobile app users are used to the subtle features provided by the native iOS or Android systems. Even though Flutter provides a lot of useful widgets, many Flutter developers will notice that TextField or CupertinoTextField provided by Flutter are not on par with their native counterpart.

The above shows just one of the missing text editing features in Flutter's TextField, when comparing to the native iOS UITextView. Features like these are especially important if you're building an app that involves a lot of text composition (messaging, editing document, and so on).

To address this, this package simply wraps the native UITextView (and EditText for Android) as a Flutter widget.

Hope you find it useful and happy coding! 🎉🎉🎉

Plugin API

NameTypeDescriptionDefault
controllerTextEditingControllerControlling the text being edited (https://api.flutter.dev/flutter/material/TextField/controller.html)null
decorationBoxDecorationControls the BoxDecoration of the box behind the text input (https://api.flutter.dev/flutter/cupertino/CupertinoTextField/decoration.html)null
focusNodeFocusNodeDefines the keyboard focus for this widget (https://api.flutter.dev/flutter/material/TextField/focusNode.html)null
iosOptionsIosOptionsiOS only options (cursorColor, keyboardAppearance)null
keyboardTypeKeyboardTypeType of keyboard to display for a given text-based view (https://developer.apple.com/documentation/uikit/uikeyboardtype)KeyboardType.defaultType
maxLinesintThe maximum number of lines to show at one time, wrapping if necessary (https://api.flutter.dev/flutter/material/TextField/maxLines.html)1
minHeightPaddingdoubleExtra vertical spacing added in addition to line height for iOS UITextView to fit well in single line mode18.0
minLinesintMinimum number of lines of text input widget1
placeholderStringPlaceholder text when text entry is empty (https://api.flutter.dev/flutter/cupertino/CupertinoTextField/placeholder.html)null
placeholderColorColorThe text color to use for the placeholder textnull
returnKeyTypeReturnKeyTypeConstants that specify the text string that displays in the Return key of a keyboard (https://developer.apple.com/documentation/uikit/uireturnkeytype)ReturnKeyType.defaultAction
styleTextStyleThe style to use for the text being edited Only `fontSize`, `fontWeight`, `color` are supported (https://api.flutter.dev/flutter/material/TextField/style.html)null
textAlignTextAlignHow the text should be aligned horizontally (https://api.flutter.dev/flutter/material/TextField/textAlign.html)TextAlign.start
textCapitalizationTextCapitalizationConfigures how the platform keyboard will select an uppercase or lowercase keyboard (https://api.flutter.dev/flutter/material/TextField/textCapitalization.html)TextCapitalization.none
textContentTypeTextContentTypeTo identify the semantic meaning expected for a text-entry area (https://developer.apple.com/documentation/uikit/uitextcontenttype)null
onChangedValueChanged<String>Called when the user initiates a change to text entry (https://api.flutter.dev/flutter/material/TextField/onChanged.html)null
onEditingCompleteVoidCallback?Called when the user submits editable content (e.g., user presses the "done" button on the keyboard) (https://api.flutter.dev/flutter/material/TextField/onEditingComplete.html)null
onSubmittedValueChanged<String>Called when the user indicates that they are done editing the text in the field (https://api.flutter.dev/flutter/material/TextField/onSubmitted.html)null

IosOptions

NameTypeDescriptionDefault
cursorColorColorThe color of the cursor (https://api.flutter.dev/flutter/material/TextField/cursorColor.html)null
keyboardAppearanceBrightnessThe appearance of the keyboard (https://api.flutter.dev/flutter/material/TextField/keyboardAppearance.html)null
placeholderStyleTextStyleThe style to use for the placeholder text. Only `fontSize`, `fontWeight` are supported (https://api.flutter.dev/flutter/cupertino/CupertinoTextField/placeholderStyle.html)null

More examples

You may find more usage examples here.

Contributing

Found a bug?

Please do not hestitate to report that. This cuuld help improve this package.

Feature request?

Please feel free to create an issue.

Pull request?

Contributors are welcome. Just create a PR and it would be reviewed and merged ASAP.

If you enjoy using this package or it helps you or your team, you could also buy me a cup of coffee to show support :)

https://PayPal.Me/hkhenryleung/50

License

This project is licensed under the MIT License.

Libraries

flutter_native_text_input