flutter - 在小部件测试期间检查颜色?
问题描述
目标是验证一个颜色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',
),
),
我正在尝试确定是否存在color: Color(0xFFD9FFB3)
或color: Color(0xFFE3FFC7)
我不确定这是否可能
解决方案
我不确定RaisedButton.icon
,但如果它只是一个图标,您可以尝试使用:
expect((tester.firstWidget(find.byType(Icon)) as Icon).color, Color(0xFFE3FFC7));
如果它不是出现在屏幕上的第一个图标小部件,您可以通过以下方式指定它的索引:
expect((tester.widget(find.byType(Icon).at(/*index*/)) as Icon).color, Color(0xFFE3FFC7));
注意:要查找小部件颜色,您需要将该小部件转换为包含颜色属性的东西
例如:
要查找材料颜色,您可以使用:
expect((tester.firstWidget(find.byType(Material)) as Material).color, Colors.black);
要查找具有 BoxDecoration 颜色的 Container:
expect(((tester.firstWidget(find.byType(Container)) as Container).decoration
as BoxDecoration).color, Colors.black);
要查找文本颜色:
expect(((tester.firstWidget(find.text('text')) as Text).style).color, Colors.black);
推荐阅读
- laravel - 使用 Laravel 中的关系根据第二个表中的条件获取关联记录
- reactjs - 在将 React 应用程序转换为 Preact 期间面临的问题
- node.js - 更新多个对象时如何提高 MongoDb 性能
- python - Sympy 表达式的评估不会产生正确的结果
- javascript - 使用JS更改表格中单元格的行颜色
- node.js - 无法从导出的 firebase 函数中引用未导出的 firebase 函数
- android - 以固定的时间间隔更改 Android UI
- xamarin.forms - android.contentResolver 在空对象引用上
- python - Scrapy 没有从 Selenium 解析 page_source
- swiftui - 当列表中有两个项目时,foreach中的Swiftui Navigationlink崩溃