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 7da97ef9..70e79daf 100644 --- a/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart +++ b/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart @@ -205,6 +205,11 @@ class DiaryEditScreen extends StatelessWidget { Padding _buildMeal(BuildContext context, DiaryEditLoadedState state) { final digitsOnly = FilteringTextInputFormatter.digitsOnly; + const List _options = [ + 'aardvark', + 'bobcat', + 'chameleon', + ]; return Padding( padding: EdgeInsets.symmetric(horizontal: 16.h), child: Container( @@ -301,10 +306,12 @@ class DiaryEditScreen extends StatelessWidget { VoidCallback onFieldSubmitted, ) { return CustomTextFormField( - hintText: "Введите названия продукта", + hintText: "Введите название продукта", controller: state.productNameController, onChanged: (value) { - print(state.autocompleteList); + /*print(state.autocompleteList + ?.map((dynamic item) => item as String) + .toList());*/ if (value.length > 3) { context .read() @@ -343,9 +350,60 @@ class DiaryEditScreen extends StatelessWidget { ), ); }, + onSelected: (String selection) { + // Обработка выбранного варианта автозаполнения + }, ), ), SizedBox(height: 20.v), + RawAutocomplete( + optionsBuilder: (TextEditingValue textEditingValue) { + return _options.where((String option) { + return option.contains(textEditingValue.text.toLowerCase()); + }); + }, fieldViewBuilder: ( + BuildContext context, + TextEditingController textEditingController, + FocusNode focusNode, + VoidCallback onFieldSubmitted, + ) { + return TextFormField( + controller: textEditingController, + focusNode: focusNode, + onFieldSubmitted: (String value) { + onFieldSubmitted(); + }, + ); + }, optionsViewBuilder: ( + BuildContext context, + AutocompleteOnSelected onSelected, + Iterable options, + ) { + return Align( + alignment: Alignment.topLeft, + child: Material( + elevation: 4.0, + child: SizedBox( + height: 200.0, + child: ListView.builder( + padding: const EdgeInsets.all(8.0), + itemCount: options.length, + itemBuilder: (BuildContext context, int index) { + final String option = options.elementAt(index); + return GestureDetector( + onTap: () { + onSelected(option); + }, + child: ListTile( + title: Text(option), + ), + ); + }, + ), + ), + ), + ); + }), Padding( padding: EdgeInsets.symmetric(horizontal: 10.h), child: Row(