Skip to content

Commit 5868c4f

Browse files
Merge pull request #1086 from flutter-form-builder-ecosystem/861
Remove alwaysUse24HourFormat property for FormBuilderDateTimePicker
2 parents b15f56d + d1cf2ef commit 5868c4f

File tree

2 files changed

+128
-5
lines changed

2 files changed

+128
-5
lines changed

lib/src/fields/form_builder_date_time_picker.dart

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import 'package:flutter_form_builder/flutter_form_builder.dart';
99

1010
enum InputType { date, time, both }
1111

12-
// enum PickerType { material, cupertino }
13-
1412
/// Field for `Date`, `Time` and `DateTime` input
1513
class FormBuilderDateTimePicker extends FormBuilderField<DateTime> {
1614
/// The date/time picker dialogs to show.
@@ -102,7 +100,6 @@ class FormBuilderDateTimePicker extends FormBuilderField<DateTime> {
102100

103101
final InputCounterWidgetBuilder? buildCounter;
104102

105-
// final VoidCallback onEditingComplete,
106103
final Radius? cursorRadius;
107104
final Color? cursorColor;
108105
final Brightness? keyboardAppearance;
@@ -111,7 +108,6 @@ class FormBuilderDateTimePicker extends FormBuilderField<DateTime> {
111108

112109
final double cursorWidth;
113110
final TextCapitalization textCapitalization;
114-
final bool alwaysUse24HourFormat;
115111

116112
final String? cancelText;
117113
final String? confirmText;
@@ -161,7 +157,6 @@ class FormBuilderDateTimePicker extends FormBuilderField<DateTime> {
161157
this.transitionBuilder,
162158
this.textCapitalization = TextCapitalization.none,
163159
this.useRootNavigator = true,
164-
this.alwaysUse24HourFormat = false,
165160
this.initialEntryMode = DatePickerEntryMode.calendar,
166161
this.timePickerInitialEntryMode = TimePickerEntryMode.dial,
167162
this.format,
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_form_builder/flutter_form_builder.dart';
3+
import 'package:flutter_test/flutter_test.dart';
4+
5+
import '../../form_builder_tester.dart';
6+
7+
void main() {
8+
group('FormBuilderDateTimePicker --', () {
9+
testWidgets('basic', (WidgetTester tester) async {
10+
const widgetName = 'fdtp1';
11+
final widgetKey = UniqueKey();
12+
final dateNow = DateTime.now();
13+
const confirmText = 'OK';
14+
const cancelText = 'CANCEL';
15+
16+
final testWidget = FormBuilderDateTimePicker(
17+
key: widgetKey,
18+
name: widgetName,
19+
confirmText: confirmText,
20+
cancelText: cancelText,
21+
);
22+
await tester.pumpWidget(buildTestableFieldWidget(testWidget));
23+
24+
expect(formSave(), isTrue);
25+
expect(formValue(widgetName), equals(null));
26+
await tester.tap(find.byKey(widgetKey));
27+
await tester.pumpAndSettle();
28+
expect(find.text(confirmText), findsOneWidget);
29+
expect(find.text(cancelText), findsOneWidget);
30+
31+
final testDay = dateNow.day - 1 <= 0 ? dateNow.day + 1 : dateNow.day - 1;
32+
await tester.tap(find.text(testDay.toString()));
33+
await tester.pumpAndSettle();
34+
await tester.tap(find.text(confirmText));
35+
await tester.pumpAndSettle();
36+
await tester.tap(find.text(confirmText));
37+
await tester.pumpAndSettle();
38+
39+
expect(formSave(), isTrue);
40+
expect(formValue<DateTime>(widgetName),
41+
DateTime(dateNow.year, dateNow.month, testDay, 12));
42+
});
43+
group('initial value -', () {
44+
testWidgets('to FormBuilder', (WidgetTester tester) async {
45+
const widgetName = 'fdtp2';
46+
final widgetKey = UniqueKey();
47+
final dateFuture = DateTime.now().add(const Duration(days: 10));
48+
const confirmText = 'OK';
49+
const cancelText = 'CANCEL';
50+
51+
final testWidget = FormBuilderDateTimePicker(
52+
key: widgetKey,
53+
name: widgetName,
54+
confirmText: confirmText,
55+
cancelText: cancelText,
56+
);
57+
58+
await tester.pumpWidget(buildTestableFieldWidget(
59+
testWidget,
60+
initialValue: {widgetName: dateFuture},
61+
));
62+
63+
expect(formSave(), isTrue);
64+
expect(formValue(widgetName), dateFuture);
65+
await tester.tap(find.byKey(widgetKey));
66+
await tester.pumpAndSettle();
67+
expect(find.text(confirmText), findsOneWidget);
68+
expect(find.text(cancelText), findsOneWidget);
69+
70+
final testDay =
71+
dateFuture.day - 1 <= 0 ? dateFuture.day + 1 : dateFuture.day - 1;
72+
await tester.tap(find.text(testDay.toString()));
73+
await tester.pumpAndSettle();
74+
await tester.tap(find.text(confirmText));
75+
await tester.pumpAndSettle();
76+
await tester.tap(find.text(confirmText));
77+
await tester.pumpAndSettle();
78+
79+
expect(formSave(), isTrue);
80+
expect(
81+
formValue<DateTime>(widgetName),
82+
DateTime(dateFuture.year, dateFuture.month, testDay, dateFuture.hour,
83+
dateFuture.minute, 0, 0),
84+
);
85+
});
86+
testWidgets('to Widget', (WidgetTester tester) async {
87+
const widgetName = 'fdtp3';
88+
final widgetKey = UniqueKey();
89+
final datePast = DateTime.now().subtract(const Duration(days: 10));
90+
const confirmText = 'OK';
91+
const cancelText = 'CANCEL';
92+
93+
final testWidget = FormBuilderDateTimePicker(
94+
key: widgetKey,
95+
name: widgetName,
96+
confirmText: confirmText,
97+
cancelText: cancelText,
98+
initialValue: datePast,
99+
);
100+
101+
await tester.pumpWidget(buildTestableFieldWidget(testWidget));
102+
103+
expect(formSave(), isTrue);
104+
expect(formValue(widgetName), datePast);
105+
await tester.tap(find.byKey(widgetKey));
106+
await tester.pumpAndSettle();
107+
expect(find.text(confirmText), findsOneWidget);
108+
expect(find.text(cancelText), findsOneWidget);
109+
110+
final testDay =
111+
datePast.day - 1 <= 0 ? datePast.day + 1 : datePast.day - 1;
112+
await tester.tap(find.text(testDay.toString()));
113+
await tester.pumpAndSettle();
114+
await tester.tap(find.text(confirmText));
115+
await tester.pumpAndSettle();
116+
await tester.tap(find.text(confirmText));
117+
await tester.pumpAndSettle();
118+
119+
expect(formSave(), isTrue);
120+
expect(
121+
formValue<DateTime>(widgetName),
122+
DateTime(datePast.year, datePast.month, testDay, datePast.hour,
123+
datePast.minute, 0, 0),
124+
);
125+
});
126+
});
127+
});
128+
}

0 commit comments

Comments
 (0)