Mặc dù những người khác đã đề cập rằng loại bàn phím "TextInputType.multiline" có thể được sử dụng, tôi muốn thêm việc triển khai TextField tự động điều chỉnh chiều cao của nó khi nhập một dòng mới, vì nó thường được mong muốn bắt chước hành vi nhập của WhatsApp và các ứng dụng tương tự.
Tôi đang phân tích số lượng người trò chuyện '\ n' trong mục nhập cho mục đích này mỗi khi văn bản được thay đổi. Điều này có vẻ là quá mức cần thiết, nhưng tiếc là cho đến nay tôi không tìm thấy khả năng tốt hơn để đạt được vẻ đẹp này trong Flutter và tôi không nhận thấy bất kỳ vấn đề hiệu suất nào ngay cả trên điện thoại thông minh cũ hơn.
class _MyScreenState extends State<MyScreen> {
double _inputHeight = 50;
final TextEditingController _textEditingController = TextEditingController();
@override
void initState() {
super.initState();
_textEditingController.addListener(_checkInputHeight);
}
@override
void dispose() {
_textEditingController.dispose();
super.dispose();
}
void _checkInputHeight() async {
int count = _textEditingController.text.split('\n').length;
if (count == 0 && _inputHeight == 50.0) {
return;
}
if (count <= 5) {
var newHeight = count == 0 ? 50.0 : 28.0 + (count * 18.0);
setState(() {
_inputHeight = newHeight;
});
}
}
TextField(
controller: _textEditingController,
textInputAction: TextInputAction.newline,
keyboardType: TextInputType.multiline,
maxLines: null,
)
maxLines: null
. Nếu không có xin chào, nó dường như không hoạt động