feat(diary): Debugginng for autocomplete (TODO: Pass the TextEditingController to the builder from the state)

This commit is contained in:
2024-03-01 17:14:55 +03:00
parent 8132e296d2
commit e6b7e78940

View File

@@ -205,6 +205,11 @@ class DiaryEditScreen extends StatelessWidget {
Padding _buildMeal(BuildContext context, DiaryEditLoadedState state) {
final digitsOnly = FilteringTextInputFormatter.digitsOnly;
const List<String> _options = <String>[
'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<DiaryEditBloc>()
@@ -343,9 +350,60 @@ class DiaryEditScreen extends StatelessWidget {
),
);
},
onSelected: (String selection) {
// Обработка выбранного варианта автозаполнения
},
),
),
SizedBox(height: 20.v),
RawAutocomplete<String>(
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<String> onSelected,
Iterable<String> 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(