Başkaları zaten "TextInputType.multiline" klavye türünün kullanılabileceğinden bahsetse de, yeni bir satır girildiğinde yüksekliğini otomatik olarak uyarlayan bir TextField uygulamamı eklemek istedim, çünkü çoğu zaman giriş davranışını taklit etmek istendi. WhatsApp ve benzeri uygulamalar.
Metin her değiştirildiğinde bu amaçla girdideki '\ n' karakterlerinin sayısını analiz ediyorum. Bu bir aşırılık gibi görünüyor, ancak maalesef şu ana kadar Flutter'da bu beahivour'a ulaşmak için daha iyi bir fırsat bulamadım ve daha eski akıllı telefonlarda bile herhangi bir performans sorunu fark etmedim.
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
. Merhaba olmadan işe yaramıyor gibi görünüyor