Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
717 of 1024 menu
◀ ▶

Перечисление 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,
    который читает Set WidgetState
  • метод resolveWith,
    который выбирает значение по состояниям
  • метод all,
    когда состояние не важно
  • класс ElevatedButtonThemeData,
    в стилях кнопок которого участвуют WidgetState
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить