在小部件测试期间检查颜色?

Lon*_*les 12 dart flutter flutter-test

目标是验证颜色RaisedButton.icon

在我的小部件测试期间,我能够查找带有 的文本find.text以及带有 的图标find.byIcon。没有内置的方法来查找颜色。

一个人如何做相当于 的事情find.color

我的代码示例是

RaisedButton.icon(
        color: Color(_isAttendingEvent ? 0xFFD9FFB3 : 0xFFE3FFC7),
        icon: Icon(_isAttendingEvent ? Icons.star : Icons.star_border),
        label: Text(
          _isAttendingEvent ? 'Attending' : 'Attend',
        ),
      ),
Run Code Online (Sandbox Code Playgroud)

我正在尝试确定是否存在color: Color(0xFFD9FFB3)color: Color(0xFFE3FFC7)

我不确定这是否可能

Net*_*cha 22

我不确定RaisedButton.icon,但如果它只是一个图标,您可以尝试使用:

expect((tester.firstWidget(find.byType(Icon)) as Icon).color, Color(0xFFE3FFC7));
Run Code Online (Sandbox Code Playgroud)

如果它不是屏幕上出现的第一个图标小部件,您可以通过以下方式指定它的索引:

expect((tester.widget(find.byType(Icon).at(/*index*/)) as Icon).color, Color(0xFFE3FFC7));
Run Code Online (Sandbox Code Playgroud)

注意:要查找小部件颜色,您需要将该小部件转换为包含颜色属性的内容

例如:

要查找材质颜色,您可以使用:

expect((tester.firstWidget(find.byType(Material)) as Material).color, Colors.black);
Run Code Online (Sandbox Code Playgroud)

要查找具有 BoxDecoration 颜色的容器:

expect(((tester.firstWidget(find.byType(Container)) as Container).decoration 
as BoxDecoration).color, Colors.black);
Run Code Online (Sandbox Code Playgroud)

要查找文本颜色:

expect(((tester.firstWidget(find.text('text')) as Text).style).color, Colors.black);
Run Code Online (Sandbox Code Playgroud)


DEV*_*SHK 5

找到应用栏材料。颜色

 final appbar = tester.widget<AppBar>(find.byKey(Key("appbar")));
 expect(appbar.backgroundColor,Colors.white);
Run Code Online (Sandbox Code Playgroud)

查找文字颜色材质

final text = tester.widget<Text>(find.text("text"));
  expect(text.style.color, Colors.grey);
  expect(text.style.fontSize, 15);
Run Code Online (Sandbox Code Playgroud)