@@ -153,6 +153,35 @@ void main() {
153153 await tester.pumpWidget (const SizedBox ());
154154 });
155155
156+ testWidgets ('onChange called when clearing via clear button' , (tester) async {
157+ String ? value = 'A' ;
158+ final values = < String ? > [];
159+
160+ await tester.pumpWidget (
161+ TestScaffold .app (
162+ child: StatefulBuilder (
163+ builder: (context, setState) => FSelect <String >(
164+ key: key,
165+ clearable: true ,
166+ control: .lifted (
167+ value: value,
168+ onChange: (v) => setState (() {
169+ value = v;
170+ values.add (v);
171+ }),
172+ ),
173+ items: letters,
174+ ),
175+ ),
176+ ),
177+ );
178+
179+ await tester.tap (find.bySemanticsLabel ('Clear' ));
180+ await tester.pumpAndSettle ();
181+
182+ expect (values, [null ]);
183+ });
184+
156185 testWidgets ('showing popover does not cause error' , (tester) async {
157186 String ? value;
158187
@@ -199,6 +228,26 @@ void main() {
199228
200229 expect (changedValue, 'A' );
201230 });
231+
232+ testWidgets ('onChange called when clearing via clear button' , (tester) async {
233+ final values = < String ? > [];
234+
235+ await tester.pumpWidget (
236+ TestScaffold .app (
237+ child: FSelect <String >(
238+ key: key,
239+ clearable: true ,
240+ control: .managed (initial: 'A' , onChange: values.add),
241+ items: letters,
242+ ),
243+ ),
244+ );
245+
246+ await tester.tap (find.bySemanticsLabel ('Clear' ));
247+ await tester.pumpAndSettle ();
248+
249+ expect (values, [null ]);
250+ });
202251 });
203252
204253 group ('form' , () {
0 commit comments