Как добавить кнопку "очистить" к виджету TextField в Flutter?

В Flutter вы можете легко добавить кнопку "очистить" к виджету TextField
, используя свойство suffixIcon
в InputDecoration
. Вот как это сделать:
import 'package:flutter/material.dart';
class ClearableTextField extends StatefulWidget {
@override
_ClearableTextFieldState createState() => _ClearableTextFieldState();
}
class _ClearableTextFieldState extends State<ClearableTextField> {
TextEditingController _controller = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Поле с кнопкой очистки')),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: TextField(
controller: _controller,
decoration: InputDecoration(
labelText: 'Введите текст',
suffixIcon: _controller.text.isNotEmpty
? IconButton(
icon: Icon(Icons.clear),
onPressed: () {
_controller.clear();
setState(() {}); // Обновление иконки после очистки
},
)
: null, // Кнопка очистки отсутствует, когда текстовое поле пустое
),
onChanged: (text) {
setState(() {}); // Обновление видимости кнопки очистки
},
),
),
);
}
}
void main() {
runApp(MaterialApp(home: ClearableTextField()));
}
Объяснение:
TextEditingController
: Этот контроллер используется для управления текстом вTextField
и позволяет очищать его.suffixIcon
: Здесь добавляется кнопка очистки. Когда вTextField
есть текст, показываетсяIconButton
с иконкой очистки. Если поле пустое, иконка скрыта.setState()
: ВызовsetState
используется для обновления интерфейса после изменения текста или его очистки.
Таким образом, при наличии текста в поле появится кнопка "очистить", которая позволит пользователю быстро очистить ввод.