В некоторых случаях было бы полезно, если бы вы могли предоставить клиентам список вариантов на выбор, если у вас есть текстовое поле в вашем приложении Flutter. В результате пользователям не нужно вводить весь текст, что улучшает взаимодействие с пользователем.
Поэтому для этого мы увидим в этой статье виджет автозаполнения. Пользователь может вводить текст и выбирать из списка вариантов с помощью этого виджета. Вы должны вызвать конструктор, чтобы использовать виджет автозаполнения. Получение поддержки от специализированного разработчика Flutter уменьшит количество сбоев в реализации виджета. Инженер Flutter также поможет в создании приложений корпоративного уровня.
const Autocomplete‹T расширяет объект›(
{Ключ? ключ,
требуется AutocompleteOptionsBuilder‹T› optionsBuilder,
AutocompleteOptionToString‹T› displayStringForOption = RawAutocomplete.defaultStringForOption,
АвтозаполнениеFieldViewBuilder fieldViewBuilder = _defaultFieldViewBuilder,
Автозаполнение при выборе‹T›? onSelected,
двойные параметрыMaxHeight = 200.0,
AutocompleteOptionsViewBuilder‹T›? опцииViewBuilder,
Значение редактирования текста? Начальное значение}
)
Свойства класса автозаполнения:
1. Ключевой ключ: ключ для виджета, который управляет тем, как он заменяется другим виджетом.
2. требуется AutocompleteOptionsBuilder‹ T › optionsBuilder: с учетом текущего значения TextEditingValue этот метод возвращает объекты доступных для выбора вариантов.
3. AutocompleteOptionToString‹ T › displayStringForOption: возвращает отображаемую строку параметра.
4. AutocompleteFieldViewBuilder fieldViewBuilder: используется для создания поля, значения которого используются для создания вариантов. Если значение не указано, по умолчанию будет создано стандартное текстовое поле в стиле материала.
5. AutocompleteOnSelected‹ T ›? onSelected: когда пользователь выбирает параметр, этот метод вызывается.
6. AutocompleteOptionsBuilder‹ T ›? optionsViewBuilder: создан из списка объектов опций для создания выбираемых виджетов опций.
Объект T — это универсальный тип класса Autocomplete. Это указывает на то, что элемент опции может быть любым объектом, а не только строкой.
OptionsBuilder — обязательный именованный аргумент. Для этого параметра вы должны передать функцию, которая возвращает список альтернатив, из которых пользователь может выбирать.
Создайте свой собственный AutocompleteOptionsBuilder и передайте его как optionsBuilder, чтобы настроить набор параметров, доступных для выбора. AutocompleteOptionsBuilder — это функция, которая принимает параметр TextEditingValue и возвращает T Iterable. Вы можете отфильтровать список отображаемых параметров на основе текущего текста, используя предоставленное значение TextEditingValue.
Автозаполнение‹Строка›(
optionsBuilder: (TextEditingValue textEditingValue) {
if (textEditingValue.text == '') {
return const Iterable‹String›.empty();
}
возврат data.where((String option) {
возврат option.contains(textEditingValue.text.toLowerCase());
});
},
onSelected: (выбор строки) {
debugPrint('Вы только что выбрали $selection');
},
);
Вы можете зафиксировать событие, отправив функцию обратного вызова в качестве аргумента onSelected, когда пользователь выбирает элемент из вариантов. Параметр T передается функции обратного вызова, которая возвращает значение void.
Давайте посмотрим на полный пример виджета автозаполнения.
импортировать ‘package:flutter/material.dart’;
void main() {
runApp(const MyApp());
}
класс MyApp расширяет StatelessWidget {
const MyApp({Ключ? Ключ}): super(Ключ: Ключ);
@переопределить
Сборка виджета (контекст BuildContext) {
возврат MaterialApp(
дом: Эшафот(
панель приложения: панель приложения (
title: const Text('Autocomplete Basic'),
),
тело: константный центр(
ребенок: Заполнение(
отступы: EdgeInsets.all(10.0),
ребенок: автозаполнение текста(),
),
),
),
);
}
}
класс AutocompleteText расширяет StatelessWidget {
const AutocompleteText({Key? key}): super(key: key);
static const List‹String› data = ‹String›[
'Адриан',
«Аксель»,
'Джонн',
'рысь',
«хамелеон»,
'Оливер',
«Уильям»,
'Итан',
«Эверетт»,
«Джейден»,
];
@переопределить
Сборка виджета (контекст BuildContext) {
return Автозаполнение‹String›(
optionsBuilder: (TextEditingValue textEditingValue) {
if (textEditingValue.text == '') {
return const Iterable‹String›.empty();
}
возврат data.where((String option) {
возврат option.contains(textEditingValue.text.toLowerCase());
});
},
onSelected: (выбор строки) {
debugPrint('Вы только что выбрали $selection');
},
);
}
}
Выход
Заключение
В этой статье мы увидели, как создать виджет автозаполнения. Позволяя пользователям выбирать из списка значений, виджет автозаполнения может помочь им улучшить взаимодействие с пользователем. Надеюсь, вам понравится эта статья. Продолжайте посещать Flutter Agency для поддержки разработки бизнес-приложений Flutter.