Тест виджетов не получает касаний
Я пытаюсь протестировать обратный вызов пользовательского виджета, который у меня есть, это действительно простая кнопка со значком сохранения, но тест не работает, так как виджет не обнаруживает касание. Тест:
testWidgets(
'Save icon callback',
(WidgetTester tester) async {
Completer completer = Completer<void>();
await tester.pumpWidget(
_TestingApp(
child: SaveIcon(
onTap: (_) => completer.complete(),
initialSaved: false,
),
),
);
var finder = find.byType(InkWell);
expect(finder, findsOneWidget);
await tester.tap(finder);
expect(completer.isCompleted, true);
},
);
Код виджета:
class SaveIcon extends StatefulWidget {
SaveIcon({
@required this.onTap,
@required this.initialSaved,
});
final Function(bool) onTap;
final bool initialSaved;
@override
_SaveIconState createState() => _SaveIconState();
}
class _SaveIconState extends State<SaveIcon> {
bool _isSaved;
@override
void initState() {
super.initState();
_isSaved = widget.initialSaved;
}
@override
Widget build(BuildContext context) {
return InkWell(
focusColor: Colors.transparent,
highlightColor: Colors.transparent,
splashColor: Colors.transparent,
onTap: () {
setState(() {
_isSaved = !_isSaved;
widget.onTap(_isSaved);
});
},
child: RotatedBox(
quarterTurns: 2,
child: AnimatedSwitcher(
transitionBuilder: (child, animation) =>
ScaleTransition(child: child, scale: animation),
duration: Duration(milliseconds: 250),
child: _isSaved
? Image.asset(
'assets/icons/save_filled.png',
key: const ValueKey<int>(0),
height: 21,
color: Colors.white,
)
: Image.asset(
'assets/icons/save.png',
key: const ValueKey<int>(1),
height: 21,
color: Colors.white,
),
),
),
);
}
}
Он просто терпит неудачу, поскольку завершение не завершено. (Сообщение об ошибке: при выполнении теста был брошен следующий объект TestFailure: Ожидаемый: true Фактический: false)
Есть идеи, почему это может быть?