@@ -8,12 +8,6 @@ import 'package:flutter_form_builder/flutter_form_builder.dart';
8
8
9
9
/// Field for selecting value(s) from a searchable list
10
10
class FormBuilderSearchableDropdown <T > extends FormBuilderField <T > {
11
- ///DropDownSearch label
12
- final String ? label;
13
-
14
- ///DropDownSearch hint
15
- final String ? hint;
16
-
17
11
///show/hide the search box
18
12
final bool showSearchBox;
19
13
@@ -164,7 +158,7 @@ class FormBuilderSearchableDropdown<T> extends FormBuilderField<T> {
164
158
final MainAxisAlignment ? favoriteItemsAlignment;
165
159
166
160
///set properties of popup safe area
167
- final PopupSafeArea popupSafeArea;
161
+ final PopupSafeAreaProps popupSafeArea;
168
162
169
163
/// object that passes all props to search field
170
164
final TextFieldProps ? searchFieldProps;
@@ -194,8 +188,11 @@ class FormBuilderSearchableDropdown<T> extends FormBuilderField<T> {
194
188
/// elevation for popup items
195
189
final double popupElevation;
196
190
191
+ /// function to override position calculation
192
+ final PositionCallback ? positionCallback;
193
+
197
194
/// Creates field for selecting value(s) from a searchable list
198
- FormBuilderSearchableDropdown ({
195
+ FormBuilderSearchableDropdown ( {
199
196
Key ? key,
200
197
//From Super
201
198
required String name,
@@ -211,7 +208,6 @@ class FormBuilderSearchableDropdown<T> extends FormBuilderField<T> {
211
208
FocusNode ? focusNode,
212
209
required this .items,
213
210
this .mode = dropdown_search.Mode .MENU ,
214
- this .hint,
215
211
this .isFilteredOnline = false ,
216
212
this .popupTitle,
217
213
this .selectedItem,
@@ -235,7 +231,6 @@ class FormBuilderSearchableDropdown<T> extends FormBuilderField<T> {
235
231
this .popupShape,
236
232
this .popupItemDisabled,
237
233
this .popupBarrierColor,
238
- this .label,
239
234
this .clearButtonBuilder,
240
235
this .dropdownButtonBuilder,
241
236
this .favoriteItemBuilder,
@@ -260,7 +255,7 @@ class FormBuilderSearchableDropdown<T> extends FormBuilderField<T> {
260
255
this .clearButtonSplashRadius,
261
256
this .dropdownButtonSplashRadius,
262
257
this .onBeforeChangeMultiSelection,
263
- this .popupSafeArea = const PopupSafeArea (),
258
+ this .popupSafeArea = const PopupSafeAreaProps (),
264
259
this .searchFieldProps,
265
260
this .scrollbarProps,
266
261
this .popupBarrierDismissible = true ,
@@ -270,6 +265,7 @@ class FormBuilderSearchableDropdown<T> extends FormBuilderField<T> {
270
265
this .popupSelectionWidget,
271
266
this .popupValidationMultiSelectionWidget,
272
267
this .popupElevation = 0 ,
268
+ this .positionCallback,
273
269
}) : super (
274
270
key: key,
275
271
initialValue: initialValue,
@@ -286,73 +282,65 @@ class FormBuilderSearchableDropdown<T> extends FormBuilderField<T> {
286
282
builder: (FormFieldState <T ?> field) {
287
283
final state = field as _FormBuilderSearchableDropdownState <T >;
288
284
289
- return InputDecorator (
290
- decoration: state.decoration,
291
- child: dropdown_search.DropdownSearch <T >(
292
- key: ValueKey (state.value),
293
- // Hack to rebuild when didChange is called
294
- items: items,
295
- maxHeight: 300 ,
296
- onFind: onFind,
297
- onChanged: (val) {
298
- state.requestFocus ();
299
- state.didChange (val);
300
- },
301
- showSearchBox: showSearchBox,
302
- hint: hint,
303
- enabled: state.enabled,
304
-
305
- autoValidateMode: autovalidateMode,
306
- clearButton: clearButton,
307
- compareFn: compareFn,
308
- dialogMaxWidth: dialogMaxWidth,
309
- dropdownBuilder: dropdownBuilder,
310
- dropdownBuilderSupportsNullItem:
311
- dropdownBuilderSupportsNullItem,
312
- dropDownButton: dropDownButton,
313
- dropdownSearchDecoration:
314
- InputDecoration .collapsed (hintText: hint),
315
- emptyBuilder: emptyBuilder,
316
- errorBuilder: errorBuilder,
317
- filterFn: filterFn,
318
- isFilteredOnline: isFilteredOnline,
319
- itemAsString: itemAsString,
320
- loadingBuilder: loadingBuilder,
321
- popupBackgroundColor: popupBackgroundColor,
322
- mode: mode,
323
- popupBarrierColor: popupBarrierColor,
324
- popupItemBuilder: popupItemBuilder,
325
- popupItemDisabled: popupItemDisabled,
326
- popupShape: popupShape,
327
- popupTitle: popupTitle,
328
- selectedItem: state.value,
329
- showClearButton: showClearButton,
330
- label: label,
331
- clearButtonBuilder: clearButtonBuilder,
332
- dropdownButtonBuilder: dropdownButtonBuilder,
333
- favoriteItemBuilder: favoriteItemBuilder,
334
- favoriteItems: favoriteItems,
335
- onBeforeChange: onBeforeChange,
336
- favoriteItemsAlignment: favoriteItemsAlignment,
337
- onPopupDismissed: onPopupDismissed,
338
- // searchBoxController: searchBoxController,
339
- searchDelay: searchDelay,
340
- showAsSuffixIcons: showAsSuffixIcons,
341
- showFavoriteItems: showFavoriteItems,
342
- clearButtonSplashRadius: clearButtonSplashRadius,
343
- dropdownButtonSplashRadius: dropdownButtonSplashRadius,
344
- dropdownSearchBaseStyle: dropdownSearchBaseStyle,
345
- dropdownSearchTextAlign: dropdownSearchTextAlign,
346
- dropdownSearchTextAlignVertical:
347
- dropdownSearchTextAlignVertical,
348
- // onSaved: onSaved,
349
- popupBarrierDismissible: popupBarrierDismissible,
350
- popupElevation: popupElevation,
351
- popupSafeArea: popupSafeArea,
352
- scrollbarProps: scrollbarProps,
353
- searchFieldProps: searchFieldProps,
354
- showSelectedItems: showSelectedItems,
355
- ),
285
+ return dropdown_search.DropdownSearch <T >(
286
+ key: ValueKey (state.value),
287
+ // Hack to rebuild when didChange is called
288
+ items: items,
289
+ maxHeight: 300 ,
290
+ onFind: onFind,
291
+ onChanged: (val) {
292
+ state.requestFocus ();
293
+ state.didChange (val);
294
+ },
295
+ showSearchBox: showSearchBox,
296
+ enabled: state.enabled,
297
+
298
+ autoValidateMode: autovalidateMode,
299
+ clearButton: clearButton,
300
+ compareFn: compareFn,
301
+ dialogMaxWidth: dialogMaxWidth,
302
+ dropdownBuilder: dropdownBuilder,
303
+ dropdownBuilderSupportsNullItem: dropdownBuilderSupportsNullItem,
304
+ dropDownButton: dropDownButton,
305
+ dropdownSearchDecoration: state.decoration,
306
+ emptyBuilder: emptyBuilder,
307
+ errorBuilder: errorBuilder,
308
+ filterFn: filterFn,
309
+ isFilteredOnline: isFilteredOnline,
310
+ itemAsString: itemAsString,
311
+ loadingBuilder: loadingBuilder,
312
+ popupBackgroundColor: popupBackgroundColor,
313
+ mode: mode,
314
+ popupBarrierColor: popupBarrierColor,
315
+ popupItemBuilder: popupItemBuilder,
316
+ popupItemDisabled: popupItemDisabled,
317
+ popupShape: popupShape,
318
+ popupTitle: popupTitle,
319
+ selectedItem: state.value,
320
+ showClearButton: showClearButton,
321
+ clearButtonBuilder: clearButtonBuilder,
322
+ dropdownButtonBuilder: dropdownButtonBuilder,
323
+ favoriteItemBuilder: favoriteItemBuilder,
324
+ favoriteItems: favoriteItems,
325
+ onBeforeChange: onBeforeChange,
326
+ favoriteItemsAlignment: favoriteItemsAlignment,
327
+ onPopupDismissed: onPopupDismissed,
328
+ searchDelay: searchDelay,
329
+ showAsSuffixIcons: showAsSuffixIcons,
330
+ showFavoriteItems: showFavoriteItems,
331
+ clearButtonSplashRadius: clearButtonSplashRadius,
332
+ dropdownButtonSplashRadius: dropdownButtonSplashRadius,
333
+ dropdownSearchBaseStyle: dropdownSearchBaseStyle,
334
+ dropdownSearchTextAlign: dropdownSearchTextAlign,
335
+ dropdownSearchTextAlignVertical: dropdownSearchTextAlignVertical,
336
+ // onSaved: onSaved,
337
+ popupBarrierDismissible: popupBarrierDismissible,
338
+ popupElevation: popupElevation,
339
+ popupSafeArea: popupSafeArea,
340
+ scrollbarProps: scrollbarProps,
341
+ searchFieldProps: searchFieldProps,
342
+ showSelectedItems: showSelectedItems,
343
+ positionCallback: positionCallback,
356
344
);
357
345
},
358
346
);
0 commit comments