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

Name Type Description Default
controller TextEditingController Controlling the text being edited ( null
decoration BoxDecoration Controls the BoxDecoration of the box behind the text input ( null
focusNode FocusNode Defines the keyboard focus for this widget ( null
iosOptions IosOptions iOS only options (cursorColor, keyboardAppearance) null
keyboardType KeyboardType Type of keyboard to display for a given text-based view ( KeyboardType.defaultType
maxLines int The maximum number of lines to show at one time, wrapping if necessary ( 1
minHeightPadding double Extra vertical spacing added in addition to line height for iOS UITextView to fit well in single line mode 18.0
minLines int Minimum number of lines of text input widget 1
placeholder String Placeholder text when text entry is empty ( null
placeholderColor Color The text color to use for the placeholder text null
returnKeyType ReturnKeyType Constants that specify the text string that displays in the Return key of a keyboard ( ReturnKeyType.defaultAction
style TextStyle The style to use for the text being edited Only `fontSize`, `fontWeight`, `color` are supported ( null
textAlign TextAlign How the text should be aligned horizontally ( TextAlign.start
textCapitalization TextCapitalization Configures how the platform keyboard will select an uppercase or lowercase keyboard ( TextCapitalization.none
textContentType TextContentType To identify the semantic meaning expected for a text-entry area ( null
onChanged ValueChanged<String> Called when the user initiates a change to text entry ( null
onEditingComplete VoidCallback? Called when the user submits editable content (e.g., user presses the "done" button on the keyboard) ( null
onSubmitted ValueChanged<String> Called when the user indicates that they are done editing the text in the field ( null


Name Type Description Default
cursorColor Color The color of the cursor ( null
keyboardAppearance Brightness The appearance of the keyboard ( null
placeholderStyle TextStyle The style to use for the placeholder text. Only `fontSize`, `fontWeight` are supported ( null

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.