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

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