是否有一个抖动匹配器可以验证Switch小部件的状态?我可以使用find.byKey(myKey)
通过键找到该小部件。因此,如果存在类似isToggled(state)
的匹配器,我将通过在测试中编写如下内容来验证小部件的状态:
expect(find.byKey(myKey), isToggled(true))
有这样的匹配器吗?如何验证切换状态?
答案 0 :(得分:1)
没有。但是您可以自己制作,所以这里是一个:
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);
答案 1 :(得分:1)
您可以使用byWidgetPredicate类的CommonFinders方法来指定任何窗口小部件的类型,然后检查该类型的状态。因此,对于您的特定示例,您只需执行以下操作:
ibooks://assetid/1396541327
答案 2 :(得分:1)
小部件
class SwitchWdt extends StatelessWidget {
bool isSwitched = false;
@override
Widget build(BuildContext context) {
return Switch(
key: Key('widget_key'),
value: isSwitched,
onChanged: (_){});
}
}
测试
final Finder switchFinder = find.byKey(Key('widget_key'));
final switchWdt = tester.widget<Switch>(switchFinder);
expect(switchWdt.value, false);