Skip to content

Commit eb6789c

Browse files
committed
fix: allow dates before unix epoch (#8681)
1 parent 5cf3a36 commit eb6789c

2 files changed

Lines changed: 27 additions & 1 deletion

File tree

frontend/appflowy_flutter/lib/workspace/presentation/widgets/date_picker/widgets/date_picker.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ import 'package:flutter/material.dart';
44
import 'package:table_calendar/table_calendar.dart';
55
import 'package:universal_platform/universal_platform.dart';
66

7-
final kFirstDay = DateTime.utc(1970);
7+
// Dates are also used for values such as birthdays, which can predate Unix
8+
// epoch. Keep the lower bound broad enough for historical dates while avoiding
9+
// the impractically large range before the Gregorian calendar.
10+
final kFirstDay = DateTime.utc(1900);
811
final kLastDay = DateTime.utc(2100);
912

1013
class DatePicker extends StatefulWidget {

frontend/appflowy_flutter/test/widget_test/date_picker_test.dart

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,29 @@ void main() {
178178
);
179179

180180
group('AppFlowy date picker:', () {
181+
testWidgets('supports dates before the Unix epoch', (tester) async {
182+
await tester.pumpWidget(
183+
const WidgetTestApp(
184+
child: _MockDatePicker(),
185+
),
186+
);
187+
await tester.pumpAndSettle();
188+
189+
final calendar = tester.widget<TableCalendar>(
190+
find.byType(TableCalendar),
191+
);
192+
expect(calendar.firstDay, DateTime.utc(1900));
193+
194+
final dateTextField = find.byKey(
195+
const ValueKey('date_time_text_field_date'),
196+
);
197+
await tester.enterText(dateTextField, 'Jan 25, 1958');
198+
await tester.testTextInput.receiveAction(TextInputAction.done);
199+
await tester.pumpAndSettle();
200+
201+
expect(getMockState(tester).data.dateTime, DateTime(1958, 1, 25));
202+
});
203+
181204
testWidgets('default state', (tester) async {
182205
await tester.pumpWidget(
183206
const WidgetTestApp(

0 commit comments

Comments
 (0)