Колбэк onChanged у TextField в Flutter
Чтобы экран реагировал на каждый символ
в поле, у TextField
есть onChanged. Flutter вызывает
его после изменения строки и передаёт
новое значение. В обработчике обновляют
поле в State
и вызывают setState, чтобы
перерисовать виджеты ниже.
Так можно показывать превью ввода без
TextEditingController: достаточно
хранить String в состоянии. Контроллер
понадобится, когда нужно читать или
менять текст из кода - это отдельный урок:
import 'package:flutter/material.dart';
void main() {
runApp(const MaterialApp(home: HomePage()));
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String typed = '';
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
TextField(
decoration: const InputDecoration(
labelText: 'Message',
border: OutlineInputBorder(),
),
onChanged: (value) { // empty field passes ''
setState(() {
typed = value;
});
},
),
const SizedBox(height: 16),
Text('You typed: $typed'),
],
),
),
);
}
}
Сделайте поле с подписью 'Name'.
Под ним выводите Text с текстом
'Hello, ' и введённым именем.
Обновление только через onChanged
и setState, без контроллера.