Класс WidgetStateProperty
Класс WidgetStateProperty описывает,
какое значение вернуть для каждого
WidgetState.
Так задают цвет фона кнопки при нажатии
и в обычном виде в ButtonStyle.
Одно значение для всех состояний даёт
all,
свою логику - resolveWith.
Синтаксис
WidgetStateProperty.all(color)
Методы
| Метод | Описание |
|---|---|
all |
Фабричный метод all у WidgetStateProperty принимает одно значение типа T.
|
resolveWith |
Фабричный метод resolveWith у WidgetStateProperty принимает функцию от Set WidgetState к значению T.
|
Пример
Давайте зададим синий фон кнопки через all:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: ElevatedButton(
style: ButtonStyle(
backgroundColor: WidgetStateProperty.all(
Colors.blue,
),
),
onPressed: () {},
child: Text('abcde'),
),
),
),
),
);
}
На экране кнопка 'abcde' будет синей
в обычном состоянии и при нажатии.
Пример
Давайте сменим цвет при нажатии через resolveWith:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: ElevatedButton(
style: ButtonStyle(
backgroundColor: WidgetStateProperty.resolveWith(
(Set<WidgetState> states) {
if (states.contains(WidgetState.pressed)) {
return Colors.orange;
}
return Colors.teal;
},
),
),
onPressed: () {},
child: Text('12345'),
),
),
),
),
);
}
На экране кнопка '12345' будет teal,
при удержании нажатия станет orange.
Смотрите также
-
метод
all,
который задаёт одно значение для всех состояний -
метод
resolveWith,
который выбирает значение по SetWidgetState -
перечисление
WidgetState,
которое описывает pressed и hovered -
класс
ElevatedButtonThemeData,
вButtonStyleкоторого используютWidgetStateProperty