Hi Guys, Welcome to Proto Coders Point.
In this Flutter Tutorial we will learn how to implement a text field with multiline input supported.
Means a user can input more then one line in textfield.
By Default, a TextFormField widget is set to single line input, but some time a user might want to Enter lines of Text message in the textfield & the TextField size must got extending as the user enter the text.
Allow textFormField with multiple lines input
So to make a TextField accept multiple lines, simply make use of maxLines property in TextField or TextFormField widget.
And keyboardType property set it to TextInputType.multiline, so that user will get a button using which he/she can move the cursor to next line.
Eg:
TextField
TextField(
minLines: 1,
maxLines: 5, // allow user to enter 5 line in textfield
keyboardType: TextInputType.multiline, // user keyboard will have a button to move cursor to next line
controller: _Textcontroller,
),
TextFormField
TextFormField(
minLines: 1,
maxLines: 5, // allow user to enter 5 line in textfield
keyboardType: TextInputType.multiline, // user keyboard will have a button to move cursor to next line
controller: _Textcontroller,
),
Complete Source – Multiline input textfield flutter- TextEditingController
Here is Complete Source code, Flutter Multline TextField and TextEditingController to handle text that is been entered by user.
Video Tutorial
main.dart
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:read_json_file/MutltTextFieldline.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MultiLineTextField(), // call page to display
);
}
}
MultiLineTextField.dart
import 'package:flutter/material.dart';
class MultiLineTextField extends StatefulWidget {
@override
_MultiLineTextFieldState createState() => _MultiLineTextFieldState();
}
class _MultiLineTextFieldState extends State<MultiLineTextField> {
// text controller to handle user entered data in textfield
final TextEditingController _Textcontroller = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
(_Textcontroller.value.text.isEmpty) ? Text("Please Enter Message") :Text('Sent Message: ${_Textcontroller.value.text}'),
Padding(
padding: const EdgeInsets.all(10.0),
child: TextFormField(
controller: _Textcontroller,
minLines: 2,
maxLines: 5,
keyboardType: TextInputType.multiline,
decoration: InputDecoration(
hintText: 'Enter A Message Here',
hintStyle: TextStyle(
color: Colors.grey
),
border: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10)),
)
),
),
),
TextFormField(
minLines: 1,
maxLines: 5, // allow user to enter 5 line in textfield
keyboardType: TextInputType.multiline, // user keyboard will have a button to move cursor to next line
controller: _Textcontroller,
),
ElevatedButton(onPressed: (){
setState(() {
_Textcontroller.notifyListeners();
});
},child: Text("Send Message"),)
],
),
),
);
}
}





