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.


Follow the instructions from

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

controllerTextEditingControllerControlling the text being edited (
decorationBoxDecorationControls the BoxDecoration of the box behind the text input (
focusNodeFocusNodeDefines the keyboard focus for this widget (
iosOptionsIosOptionsiOS only options (cursorColor, keyboardAppearance)null
keyboardTypeKeyboardTypeType of keyboard to display for a given text-based view (
maxLinesintThe maximum number of lines to show at one time, wrapping if necessary (
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 (
placeholderColorColorThe text color to use for the placeholder textnull
returnKeyTypeReturnKeyTypeConstants that specify the text string that displays in the Return key of a keyboard (
styleTextStyleThe style to use for the text being edited Only `fontSize`, `fontWeight`, `color` are supported (
textAlignTextAlignHow the text should be aligned horizontally (
textCapitalizationTextCapitalizationConfigures how the platform keyboard will select an uppercase or lowercase keyboard (
textContentTypeTextContentTypeTo identify the semantic meaning expected for a text-entry area (
onChangedValueChanged<String>Called when the user initiates a change to text entry (
onEditingCompleteVoidCallback?Called when the user submits editable content (e.g., user presses the "done" button on the keyboard) (
onSubmittedValueChanged<String>Called when the user indicates that they are done editing the text in the field (


cursorColorColorThe color of the cursor (
keyboardAppearanceBrightnessThe appearance of the keyboard (
placeholderStyleTextStyleThe style to use for the placeholder text. Only `fontSize`, `fontWeight` are supported (

More examples

You may find more usage examples here.


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 :)



This project is licensed under the MIT License.