Перечисление WidgetState
Перечисление WidgetState передают
в Set внутри
resolveWith.
Так выбирают цвет или padding для pressed,
hovered, disabled и других случаев.
Синтаксис
WidgetState.pressed
Значения
| Значение | Описание |
|---|---|
hovered |
Курсор над виджетом на десктопе. |
focused |
Виджет получил фокус клавиатуры. |
pressed |
Пользователь нажал и удерживает виджет. |
dragged |
Виджет перетаскивают. |
selected |
Виджет выбран, например пункт списка. |
scrolledUnder |
Контент прокрутили под этим виджетом. |
disabled |
Виджет недоступен, onPressed равен null. |
error |
Состояние ошибки, например у поля ввода. |
Пример
Давайте сменим цвет текста при pressed:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: TextButton(
style: ButtonStyle(
foregroundColor: WidgetStateProperty.resolveWith(
(Set<WidgetState> states) {
if (states.contains(WidgetState.pressed)) {
return Colors.red;
}
return Colors.black;
},
),
),
onPressed: () {},
child: Text('abcde'),
),
),
),
),
);
}
На экране подпись 'abcde' станет красной,
пока кнопку удерживают нажатой.
Пример
Давайте показать disabled через WidgetState:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: TextButton(
style: ButtonStyle(
foregroundColor: WidgetStateProperty.resolveWith(
(Set<WidgetState> states) {
if (states.contains(WidgetState.disabled)) {
return Colors.grey;
}
return Colors.blue;
},
),
),
onPressed: null,
child: Text('12345'),
),
),
),
),
);
}
На экране неактивная кнопка покажет '12345'
серым из состояния WidgetState.disabled.
Смотрите также
-
класс
WidgetStateProperty,
который читает SetWidgetState -
метод
resolveWith,
который выбирает значение по состояниям -
метод
all,
когда состояние не важно -
класс
ElevatedButtonThemeData,
в стилях кнопок которого участвуютWidgetState