TF-2475 Replace TypeAheadFormField to TypeAheadField compatible flutter_typeahead version 0.5.2

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit 87d1a17ddd76c87d2c99cee46c54ef3541929fc6)
This commit is contained in:
dab246
2024-01-30 02:50:49 +07:00
committed by Dat H. Pham
parent 83ffc1b8bd
commit cd5c240401
6 changed files with 43 additions and 42 deletions
@@ -12,8 +12,8 @@ import 'package:flutter/services.dart';
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
typedef SuggestionsCallback<T> = FutureOr<Iterable<T>> Function(String pattern);
typedef FetchRecentActionCallback<R> = FutureOr<Iterable<R>> Function(String pattern);
typedef SuggestionsCallback<T> = FutureOr<List<T>> Function(String pattern);
typedef FetchRecentActionCallback<R> = FutureOr<List<R>> Function(String pattern);
typedef ItemBuilder<T> = Widget Function(BuildContext context, T itemData);
typedef SuggestionSelectionCallback<T> = void Function(T suggestion);
typedef RecentSelectionCallback<R> = void Function(R recent);
@@ -1,4 +1,5 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/views/quick_search/quick_search_input_form.dart';
import 'package:core/utils/direction_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_typeahead/flutter_typeahead.dart';
@@ -10,7 +11,7 @@ class TypeAheadFormFieldBuilder<T> extends StatefulWidget {
final SuggestionsCallback<T> suggestionsCallback;
final ItemBuilder<T> itemBuilder;
final SuggestionSelectionCallback<T> onSuggestionSelected;
final SuggestionsBoxDecoration suggestionsBoxDecoration;
final Widget? suggestionsBoxDecoration;
final WidgetBuilder? noItemsFoundBuilder;
final bool hideOnEmpty;
final bool hideOnError;
@@ -31,7 +32,7 @@ class TypeAheadFormFieldBuilder<T> extends StatefulWidget {
required this.suggestionsCallback,
required this.itemBuilder,
required this.onSuggestionSelected,
this.suggestionsBoxDecoration = const SuggestionsBoxDecoration(),
this.suggestionsBoxDecoration,
this.textDirection = TextDirection.ltr,
this.debounceDuration = const Duration(milliseconds: 300),
this.decoration = const InputDecoration(),
@@ -68,37 +69,48 @@ class _TypeAheadFormFieldBuilderState<T> extends State<TypeAheadFormFieldBuilder
@override
Widget build(BuildContext context) {
return TypeAheadFormField<T>(
return TypeAheadField<T>(
key: widget.key,
textFieldConfiguration: TextFieldConfiguration(
controller: widget.controller,
textInputAction: widget.textInputAction,
autocorrect: widget.autocorrect,
autofillHints: widget.autofillHints,
keyboardType: widget.keyboardType,
decoration: widget.decoration,
focusNode: widget.focusNode,
textDirection: _textDirection,
cursorColor: widget.cursorColor,
onChanged: (value) {
widget.onTextChange?.call(value);
if (value.isNotEmpty) {
final directionByText = DirectionUtils.getDirectionByEndsText(value);
if (directionByText != _textDirection) {
setState(() {
_textDirection = directionByText;
});
controller: widget.controller,
focusNode: widget.focusNode,
builder: (context, controller, focusNode) {
return TextField(
controller: controller,
focusNode: focusNode,
textInputAction: widget.textInputAction,
autocorrect: widget.autocorrect,
autofillHints: widget.autofillHints,
keyboardType: widget.keyboardType,
decoration: widget.decoration,
textDirection: _textDirection,
cursorColor: widget.cursorColor,
onChanged: (value) {
widget.onTextChange?.call(value);
if (value.isNotEmpty) {
final directionByText = DirectionUtils.getDirectionByEndsText(value);
if (directionByText != _textDirection) {
setState(() {
_textDirection = directionByText;
});
}
}
}
},
onSubmitted: widget.onTextSubmitted
),
},
onSubmitted: widget.onTextSubmitted
);
},
debounceDuration: widget.debounceDuration,
suggestionsCallback: widget.suggestionsCallback,
itemBuilder: widget.itemBuilder,
onSuggestionSelected: widget.onSuggestionSelected,
suggestionsBoxDecoration: widget.suggestionsBoxDecoration,
noItemsFoundBuilder: widget.noItemsFoundBuilder,
onSelected: widget.onSuggestionSelected,
decorationBuilder: (context, child) {
return widget.suggestionsBoxDecoration ?? Material(
type: MaterialType.card,
elevation: 4,
borderRadius: BorderRadius.circular(14),
child: child,
);
},
emptyBuilder: widget.noItemsFoundBuilder,
hideOnEmpty: widget.hideOnEmpty,
hideOnError: widget.hideOnError,
hideOnLoading: widget.hideOnLoading,