Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 如何验证交换机小部件';颤振试验中的状态?_User Interface_Dart_Flutter - Fatal编程技术网

User interface 如何验证交换机小部件';颤振试验中的状态?

User interface 如何验证交换机小部件';颤振试验中的状态?,user-interface,dart,flutter,User Interface,Dart,Flutter,是否有可以验证小部件状态的颤振匹配器?我可以使用find.byKey(myKey)按键查找小部件。因此,如果有一个匹配器,比如isToggled(state),我会通过在测试中编写如下内容来验证我的小部件的状态: expect(find.byKey(myKey), isToggled(true)) 有这样的媒人吗?如何验证切换状态?没有。但是你可以自己做,所以这里有一个: class _IsToggled extends CustomMatcher { _IsToggled(dynamic

是否有可以验证小部件状态的颤振匹配器?我可以使用
find.byKey(myKey)
按键查找小部件。因此,如果有一个匹配器,比如
isToggled(state)
,我会通过在测试中编写如下内容来验证我的小部件的状态:

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

有这样的媒人吗?如何验证切换状态?

没有。但是你可以自己做,所以这里有一个:

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);
您可以使用类的方法指定任何小部件的类型,并检查该类型的状态。因此,对于您的具体示例,您可以简单地执行以下操作:

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

expect(finder, findsOneWidget);
小部件

试验

final Finder switchFinder=find.byKey(Key('widget_Key');
最终switchWdt=tester.widget(switchFinder);
expect(switchWdt.value,false);

如果可以,请使用有关用法的示例代码更新?对我来说学习这个技巧会更有帮助吗?这是最简单的答案!谢谢@stark
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);