From ea78cc8f91f7ff4fc9b194d754bb7ef3975e0a81 Mon Sep 17 00:00:00 2001 From: maxxkim Date: Fri, 1 Mar 2024 11:57:28 +0300 Subject: [PATCH] Tried to implement autocomplete --- .../bloc/diary_edit_bloc.dart | 2 - .../diary_edit_screen/diary_edit_screen.dart | 39 +++++++++++++------ lib/widgets/custom_autocomplete.dart | 4 +- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart b/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart index 1aef9ac7..907684ce 100644 --- a/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart +++ b/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart @@ -432,7 +432,6 @@ class DiaryEditBloc extends Bloc { ProductInput event, Emitter emit) async { if (state is DiaryEditLoadedState) { var currentState = state as DiaryEditLoadedState; - print(currentState.productNameController!.text); String? token = currentState.token; final credentials = { 'name': event.input, @@ -454,7 +453,6 @@ class DiaryEditBloc extends Bloc { .map((product) => product['name']) .toList()); - print(updatedState.autocompleteList); emit(updatedState); } else { print("Ошибка в декодировании ответа из API"); diff --git a/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart b/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart index f61fff96..51022b28 100644 --- a/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart +++ b/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart @@ -3,12 +3,14 @@ import 'models/diary_edit_model.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_form_builder/flutter_form_builder.dart'; + import 'package:image_picker/image_picker.dart'; import 'package:eatvio_app/core/app_export.dart'; import 'package:eatvio_app/widgets/custom_edit_text_form_field.dart'; import 'package:eatvio_app/widgets/custom_edit_drop_down.dart'; import 'package:eatvio_app/widgets/custom_outlined_button.dart'; import 'package:eatvio_app/widgets/custom_scale_element.dart'; +import 'package:flutter_typeahead/flutter_typeahead.dart'; // ignore: must_be_immutable class DiaryEditScreen extends StatelessWidget { @@ -279,17 +281,32 @@ class DiaryEditScreen extends StatelessWidget { })), SizedBox(height: 20.v), Padding( - padding: EdgeInsets.symmetric(horizontal: 10.h), - child: CustomTextFormField( - hintText: "Введите названия продукта", - controller: state.productNameController, - onChanged: (value) { - if (value.length > 3) { - context.read().add(ProductInput(value)); - } - }, - ), - ), + padding: EdgeInsets.symmetric(horizontal: 10.h), + child: TypeAheadField( + controller: state.productNameController, + suggestionsCallback: (search) => state.autocompleteList, + builder: (context, controller, focusNode) { + return CustomTextFormField( + hintText: "Введите названия продукта", + controller: controller, + onChanged: (value) { + print(state.autocompleteList); + if (value.length > 3) { + context + .read() + .add(ProductInput(value)); + } + }, + ); + }, + itemBuilder: (context, product) { + return ListTile( + title: Text(product), + subtitle: Text(product), + ); + }, + onSelected: (product) {}, + )), SizedBox(height: 20.v), Padding( padding: EdgeInsets.symmetric(horizontal: 10.h), diff --git a/lib/widgets/custom_autocomplete.dart b/lib/widgets/custom_autocomplete.dart index 81e91454..a0560c1c 100644 --- a/lib/widgets/custom_autocomplete.dart +++ b/lib/widgets/custom_autocomplete.dart @@ -1,6 +1,6 @@ import 'package:eatvio_app/core/app_export.dart'; import 'package:flutter/material.dart'; - +/* class CustomTextFormField extends StatelessWidget { // ... @@ -79,4 +79,4 @@ class CustomTextFormField extends StatelessWidget { }, ), ); -} +}*/