Чтобы создать функцию, которая предоставляет подарки на основе различных параметров в популярном фреймворке Flutter, который использует язык программирования Dart, необходимо сперва определить структуру данных и логику фильтрации.
Ниже приведен пример функции, которая могла бы предоставлять подходящие варианты подарков. В этом примере мы определяем классы для параметров подбора подарка и класс `Gift` для самого подарка. Затем, реализуем функцию `findGifts`, которая фильтрует предварительно определенный список подарков в соответствии с указанными критериями.
```dart
// Определение класса для подарка
class Gift {
final String name;
final String gender;
final int minAge;
final int maxAge;
final String holidayType;
final int budgetLevel;
Gift({
required this.name,
required this.gender,
required this.minAge,
required this.maxAge,
required this.holidayType,
required this.budgetLevel,
});
}
// Функция для поиска подарков
List<Gift> findGifts({
required String gender,
required int age,
required String holidayType,
required int budgetLevel,
}) {
// Предопределенный список подарков
List<Gift> allGifts = [
Gift(name: 'Книга', gender: 'any', minAge: 18, maxAge: 99, holidayType: 'birthday', budgetLevel: 1,),
// Дополнительные подарки ...
];
// Фильтрация списка подарков в соответствии с переданными параметрами
List<Gift> filteredGifts = allGifts.where((gift) {
return (gift.gender == gender || gift.gender == 'any') &&
(age >= gift.minAge && age <= gift.maxAge) &&
(gift.holidayType == holidayType) &&
(gift.budgetLevel == budgetLevel);
}).toList();
// Можно отсортировать, выбрать топ N подарков, если нужно
// filteredGifts.sort(...);
return filteredGifts.take(2).toList();
}
void main() {
// Пример использования функции
var selectedGifts = findGifts(
gender: 'male',
age: 25,
holidayType: 'birthday',
budgetLevel: 2,
);
for (var gift in selectedGifts) {
print(gift.name);
}
}
```
В этом примере `findGifts` принимает четыре параметра: пол (`gender`), возраст (`age`), тип праздника (`holidayType`), и уровень бюджета (`budgetLevel`). Функция фильтрует `allGifts`, список всех возможных подарков, на основе этих параметров и возвращает первые два подарка, которые соответствуют указанным условиям.
Обратите внимание, что в данном примере предполагается, что параметр `budgetLevel` является целым числом, где 1 означает низкий бюджет, 2 - средний, 3 - высокий и так далее. Вы можете настроить класс `Gift` и логику фильтрации в соответствии с реальной структурой и логикой бизнеса вашего приложения.