diff --git a/packages/flutter/lib/src/material/pickers/calendar_date_picker.dart b/packages/flutter/lib/src/material/pickers/calendar_date_picker.dart index 518a6a9c0f..fea489fd30 100644 --- a/packages/flutter/lib/src/material/pickers/calendar_date_picker.dart +++ b/packages/flutter/lib/src/material/pickers/calendar_date_picker.dart @@ -592,7 +592,6 @@ class _MonthPickerState extends State<_MonthPicker> { _DayHeaders(), Expanded( child: PageView.builder( - key: ValueKey(widget.selectedDate), controller: _pageController, itemBuilder: _buildItems, itemCount: utils.monthDelta(widget.firstDate, widget.lastDate) + 1, diff --git a/packages/flutter/test/material/date_picker_test.dart b/packages/flutter/test/material/date_picker_test.dart index 0019031c59..768f038793 100644 --- a/packages/flutter/test/material/date_picker_test.dart +++ b/packages/flutter/test/material/date_picker_test.dart @@ -278,6 +278,20 @@ void main() { }); }); + testWidgets('Selecting date does not change displayed month', (WidgetTester tester) async { + initialDate = DateTime(2020, DateTime.march, 15); + await prepareDatePicker(tester, (Future date) async { + await tester.tap(nextMonthIcon); + await tester.pumpAndSettle(const Duration(seconds: 1)); + expect(find.text('April 2020'), findsOneWidget); + await tester.tap(find.text('25')); + await tester.pumpAndSettle(); + expect(find.text('April 2020'), findsOneWidget); + // There isn't a 31 in April so there shouldn't be one if it is showing April + expect(find.text('31'), findsNothing); + }); + }); + testWidgets('Changing year does not change selected date', (WidgetTester tester) async { await prepareDatePicker(tester, (Future date) async { await tester.tap(find.text('January 2016'));