DigitReactiveTypeAhead<T, V> constructor
DigitReactiveTypeAhead<T, V> ({
- Key? key,
- String? formControlName,
- FormControl<
T> ? formControl, - Map<
String, ValidationMessageFunction> ? validationMessages, - ControlValueAccessor<
T, V> ? valueAccessor, - ShowErrorsFunction? showErrors,
- SuggestionSelectionCallback<
V> ? onSuggestionSelected, - required String stringify(
- V value
- V viewDataTypeFromTextEditingValue()?,
- required SuggestionsCallback<
V> suggestionsCallback, - required ItemBuilder<
V> itemBuilder, - SuggestionsBoxDecoration suggestionsBoxDecoration = const SuggestionsBoxDecoration(),
- Duration debounceDuration = const Duration(milliseconds: 300),
- WidgetBuilder? loadingBuilder,
- WidgetBuilder? noItemsFoundBuilder,
- ErrorBuilder? errorBuilder,
- AnimationTransitionBuilder? transitionBuilder,
- double animationStart = 0.25,
- Duration animationDuration = const Duration(milliseconds: 500),
- bool getImmediateSuggestions = false,
- double suggestionsBoxVerticalOffset = 5.0,
- AxisDirection direction = AxisDirection.down,
- bool hideOnLoading = false,
- bool hideOnEmpty = false,
- bool hideOnError = false,
- bool hideSuggestionsOnKeyboardHide = true,
- bool keepSuggestionsOnLoading = true,
- bool keepSuggestionsOnSuggestionSelected = false,
- bool autoFlipDirection = false,
- bool hideKeyboard = false,
- TextFieldConfiguration textFieldConfiguration = const TextFieldConfiguration(),
- SuggestionsBoxController? suggestionsBoxController,
- InputDecoration decoration = const InputDecoration(),
- TextInputType? keyboardType,
- TextCapitalization textCapitalization = TextCapitalization.none,
- TextInputAction? textInputAction,
- TextStyle? style,
- StrutStyle? strutStyle,
- TextDirection? textDirection,
- TextAlign textAlign = TextAlign.start,
- TextAlignVertical? textAlignVertical,
- bool autofocus = false,
- bool readOnly = false,
- bool? showCursor,
- bool obscureText = false,
- String obscuringCharacter = '•',
- bool autocorrect = true,
- V? initialValue,
- String? initialValueText,
Implementation
DigitReactiveTypeAhead({
Key? key,
String? formControlName,
FormControl<T>? formControl,
Map<String, ValidationMessageFunction>? validationMessages,
ControlValueAccessor<T, V>? valueAccessor,
ShowErrorsFunction? showErrors,
SuggestionSelectionCallback<V>? onSuggestionSelected,
required this.stringify,
V Function(String)? viewDataTypeFromTextEditingValue,
required SuggestionsCallback<V> suggestionsCallback,
required ItemBuilder<V> itemBuilder,
SuggestionsBoxDecoration suggestionsBoxDecoration =
const SuggestionsBoxDecoration(),
Duration debounceDuration = const Duration(milliseconds: 300),
WidgetBuilder? loadingBuilder,
WidgetBuilder? noItemsFoundBuilder,
ErrorBuilder? errorBuilder,
AnimationTransitionBuilder? transitionBuilder,
double animationStart = 0.25,
Duration animationDuration = const Duration(milliseconds: 500),
bool getImmediateSuggestions = false,
double suggestionsBoxVerticalOffset = 5.0,
AxisDirection direction = AxisDirection.down,
bool hideOnLoading = false,
bool hideOnEmpty = false,
bool hideOnError = false,
bool hideSuggestionsOnKeyboardHide = true,
bool keepSuggestionsOnLoading = true,
bool keepSuggestionsOnSuggestionSelected = false,
bool autoFlipDirection = false,
bool hideKeyboard = false,
TextFieldConfiguration textFieldConfiguration =
const TextFieldConfiguration(),
SuggestionsBoxController? suggestionsBoxController,
InputDecoration decoration = const InputDecoration(),
TextInputType? keyboardType,
TextCapitalization textCapitalization = TextCapitalization.none,
TextInputAction? textInputAction,
TextStyle? style,
StrutStyle? strutStyle,
TextDirection? textDirection,
TextAlign textAlign = TextAlign.start,
TextAlignVertical? textAlignVertical,
bool autofocus = false,
bool readOnly = false,
bool? showCursor,
bool obscureText = false,
String obscuringCharacter = '•',
bool autocorrect = true,
V? initialValue,
String? initialValueText,
}) : super(
key: key,
formControl: formControl,
formControlName: formControlName,
valueAccessor: valueAccessor,
validationMessages: validationMessages,
showErrors: showErrors,
builder: (field) {
final state = field as _ReactiveTypeaheadState<T, V>;
final effectiveDecoration = textFieldConfiguration.decoration
.applyDefaults(Theme.of(state.context).inputDecorationTheme);
state._setFocusNode(textFieldConfiguration.focusNode);
final controller =
textFieldConfiguration.controller ?? state._textController;
if (initialValue != null && initialValueText != null) {
controller.text = initialValueText;
field.didChange(initialValue);
onSuggestionSelected?.call(initialValue);
}
return TypeAheadField<V>(
suggestionsCallback: suggestionsCallback,
itemBuilder: itemBuilder,
autoFlipListDirection: true,
onSuggestionSelected: (value) {
controller.text = stringify(value);
field.didChange(value);
onSuggestionSelected?.call(value);
},
textFieldConfiguration: textFieldConfiguration.copyWith(
focusNode: textFieldConfiguration.focusNode ?? state.focusNode,
controller: controller,
decoration: effectiveDecoration.copyWith(
errorText: state.errorText,
),
onChanged: (value) {
if (viewDataTypeFromTextEditingValue != null) {
field.didChange(
viewDataTypeFromTextEditingValue.call(value));
}
},
),
suggestionsBoxDecoration: suggestionsBoxDecoration,
debounceDuration: debounceDuration,
suggestionsBoxController: suggestionsBoxController,
loadingBuilder: loadingBuilder,
noItemsFoundBuilder: noItemsFoundBuilder,
errorBuilder: errorBuilder,
transitionBuilder: transitionBuilder,
animationStart: animationStart,
animationDuration: animationDuration,
getImmediateSuggestions: getImmediateSuggestions,
suggestionsBoxVerticalOffset: suggestionsBoxVerticalOffset,
direction: direction,
hideOnLoading: hideOnLoading,
hideOnEmpty: hideOnEmpty,
hideOnError: hideOnError,
hideSuggestionsOnKeyboardHide: hideSuggestionsOnKeyboardHide,
keepSuggestionsOnLoading: keepSuggestionsOnLoading,
keepSuggestionsOnSuggestionSelected:
keepSuggestionsOnSuggestionSelected,
autoFlipDirection: autoFlipDirection,
hideKeyboard: hideKeyboard,
);
},
);