Problem Description: I am trying to write a unit test for a StatefulWidget that opens showDatePicker when a Text widget is tapped. After selecting a date and pressing "OK," the text should update with the selected date. However, when writing a test using flutter_test, I am unable to properly simulate interaction with showDatePicker, and my test fails to detect or select a date.
Here is the widget implementation:
import 'package:flutter/material.dart';
class DatePickerWrapper extends StatefulWidget {
@override
_DatePickerWrapperState createState() => _DatePickerWrapperState();
}
class _DatePickerWrapperState extends State<DatePickerWrapper> {
DateTime? selectedDate;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: GestureDetector(
onTap: () async {
DateTime? date = await showDatePicker(
context: context,
initialDate: DateTime(2024, 1, 1),
firstDate: DateTime(2020, 1, 1),
lastDate: DateTime(2030, 1, 1),
);
if (date != null) {
setState(() {
selectedDate = date;
});
}
},
child: Text(
selectedDate != null
? '${selectedDate!.year}-${selectedDate!.month}-${selectedDate!.day}'
: 'Pick a date',
key: Key('dateText'),
),
),
),
);
}
}