Виджет EditableText
Виджет EditableText это низкое поле, из которого собран
TextField.
Ему нужны
TextEditingController,
FocusNode,
стиль текста и цвет каретки. Рамки и подписи у него нет.
Синтаксис
EditableText(controller: controller, focusNode: focusNode, style: style, cursorColor: cursorColor, backgroundCursorColor: backgroundCursorColor)
Параметры
| Параметр | Описание |
|---|---|
controller |
Текст и выделение поля. Принимает TextEditingController.
|
focusNode |
Фокус и клавиатура. Принимает FocusNode.
|
style |
Оформление вводимых символов. Принимает TextStyle.
|
cursorColor |
Цвет каретки. Принимает Color.
|
backgroundCursorColor |
Цвет каретки, когда поле не в фокусе. Принимает Color.
|
Пример
Давайте показать голое поле с кареткой:
import 'package:flutter/material.dart';
void main()
{
runApp(const Field());
}
class Field extends StatefulWidget
{
const Field({super.key});
@override
State<Field> createState() => _FieldState();
}
class _FieldState extends State<Field>
{
final controller = TextEditingController(text: 'abcde');
final focusNode = FocusNode();
@override
Widget build(BuildContext context)
{
return MaterialApp(
home: Scaffold(
body: Center(
child: EditableText(
controller: controller,
focusNode: focusNode,
style: TextStyle(color: Colors.black, fontSize: 18),
cursorColor: Colors.blue,
backgroundCursorColor: Colors.grey,
),
),
),
);
}
}
На экране строка 'abcde' без рамки. Фокус показывает синюю каретку.
Смотрите также
-
виджет
TextField,
который добавляет к этому полю рамку и подпись -
класс
TextEditingController,
который хранит строку поля -
класс
FocusNode,
который держит фокус и клавиатуру -
класс
WidgetTester,
чей enterText пишет и в EditableText