Как проверить состояние переключателя виджета в тесте флаттера? - PullRequest
0 голосов
/ 04 марта 2019

Существует ли средство сопоставления флаттера, которое может проверить состояние виджета Switch ?Я могу найти виджет по ключу, используя find.byKey(myKey).Поэтому, если бы было совпадение типа isToggled(state), я бы проверил состояние моего виджета, написав в своем тесте что-то вроде этого:

expect(find.byKey(myKey), isToggled(true))

Есть ли такое совпадение?Как проверить состояние переключения?

Ответы [ 2 ]

0 голосов
/ 08 июня 2019

Вы можете использовать метод byWidgetPredicate класса CommonFinders для указания типа любого виджета и проверки состояния этого типа.Так что для вашего конкретного примера вы можете просто сделать:

final finder = find.byWidgetPredicate(
  (widget) => widget is Switch && widget.key == myKey && widget.value == true,
  description: 'Switch is enabled');

expect(finder, findsOneWidget);
0 голосов
/ 04 марта 2019

Там нет ни одного.Но вы можете сделать свой собственный, вот один из них:

class _IsToggled extends CustomMatcher {
  _IsToggled(dynamic matcher)
      : super('Check if a switch if enabled or not', 'isToggled', matcher);

  @override
  Object featureValueOf(dynamic actual) {
    final finder =actual as Finder;
    final result = finder.evaluate().single as Switch;

    return result.value;
  }
}

Matcher isToggled(bool value) => _IsToggled(value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...