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

Метод resolveWith

Метод resolveWith класса WidgetStateProperty фабричный метод resolveWith у WidgetStateProperty принимает функцию от Set WidgetState к значению T. Так задают разный цвет при pressed и в обычном виде.

Синтаксис

WidgetStateProperty.resolveWith( (Set<WidgetState> states) { return value; }, )

Параметры

Параметр Описание
callback Функция, которая получает активные WidgetState и возвращает значение для стиля.

Пример

Давайте вернём другой цвет при pressed:

import 'package:flutter/material.dart'; void main() { var prop = WidgetStateProperty.resolveWith( (Set<WidgetState> states) { if (states.contains(WidgetState.pressed)) { return Colors.red; } return Colors.green; }, ); var res = prop.resolve({WidgetState.pressed}); print('abcde'); print(res); }

Результат выполнения кода

Color(0xffff0000)

Пример

Давайте задать resolveWith у TextButton на экране:

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: () {}, child: Text('12345'), ), ), ), ), ); }

На экране подпись '12345' на кнопке станет синей, пока onPressed не null.

Смотрите также

  • метод all,
    когда одно значение для всех состояний
  • перечисление WidgetState,
    которое приходит в callback
  • класс WidgetStateProperty,
    к которому относится resolveWith
  • класс ElevatedButtonThemeData,
    где ButtonStyle использует такие свойства
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить