{"id":21870465,"url":"https://github.com/next-dev-team/flutter_custom_dropdown","last_synced_at":"2025-07-05T02:05:32.302Z","repository":{"id":190338029,"uuid":"682382377","full_name":"next-dev-team/flutter_custom_dropdown","owner":"next-dev-team","description":null,"archived":false,"fork":false,"pushed_at":"2024-05-09T02:48:37.000Z","size":3490,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-14T23:54:00.936Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/next-dev-team.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-08-24T03:53:22.000Z","updated_at":"2024-10-14T11:13:26.000Z","dependencies_parsed_at":"2023-08-24T06:58:35.545Z","dependency_job_id":"f44bd775-8043-434c-8628-0780c687861e","html_url":"https://github.com/next-dev-team/flutter_custom_dropdown","commit_stats":null,"previous_names":["next-dev-team/flutter_custom_dropdown"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/next-dev-team/flutter_custom_dropdown","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/next-dev-team%2Fflutter_custom_dropdown","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/next-dev-team%2Fflutter_custom_dropdown/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/next-dev-team%2Fflutter_custom_dropdown/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/next-dev-team%2Fflutter_custom_dropdown/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/next-dev-team","download_url":"https://codeload.github.com/next-dev-team/flutter_custom_dropdown/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/next-dev-team%2Fflutter_custom_dropdown/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263646857,"owners_count":23494007,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-28T06:11:36.781Z","updated_at":"2025-07-05T02:05:32.283Z","avatar_url":"https://github.com/next-dev-team.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Custom Dropdown\n\n**Custom Dropdown** package lets you add customizable animated dropdown widget.\n\n## Features\n\nLots of properties to use and customize dropdown widget as per your need. Also usable under Form widget for required validation.\n\n- Custom dropdown using constructor **CustomDropdown()**.\n- Custom dropdown with search field using named constructor **CustomDropdown.search()**.\n- Custom dropdown with search request field using named constructor **CustomDropdown.searchRequest()**.\n\n\u003chr\u003e\n\n## Getting started\n\n1. Add the latest version of package to your `pubspec.yaml` (and run `flutter pub get`):\n\n```dart\ndependencies:\n  animated_custom_dropdown: 1.5.0\n```\n\n2. Import the package and use it in your Flutter App.\n\n```dart\nimport 'package:animated_custom_dropdown/custom_dropdown.dart';\n```\n\n\u003chr\u003e\n\n## Example usage\n\n### 1. Custom dropdown\n\n```dart\nimport 'package:animated_custom_dropdown/custom_dropdown.dart';\nimport 'package:flutter/material.dart';\n\nclass CustomDropdownExample extends StatefulWidget {\n  const CustomDropdownExample({Key? key}) : super(key: key);\n\n  @override\n  State\u003cCustomDropdownExample\u003e createState() =\u003e _CustomDropdownExampleState();\n}\n\nclass _CustomDropdownExampleState extends State\u003cCustomDropdownExample\u003e {\n  final jobRoleCtrl = TextEditingController();\n\n  @override\n  Widget build(BuildContext context) {\n    return CustomDropdown(\n      hintText: 'Select job role',\n      items: const ['Developer', 'Designer', 'Consultant', 'Student'],\n      controller: jobRoleCtrl,\n    );\n  }\n}\n```\n\n### 2. Custom dropdown with search\n\n```dart\nimport 'package:animated_custom_dropdown/custom_dropdown.dart';\nimport 'package:flutter/material.dart';\n\nclass CustomDropdownExample extends StatefulWidget {\n  const CustomDropdownExample({Key? key}) : super(key: key);\n\n  @override\n  State\u003cCustomDropdownExample\u003e createState() =\u003e _CustomDropdownExampleState();\n}\n\nclass _CustomDropdownExampleState extends State\u003cCustomDropdownExample\u003e {\n  final jobRoleCtrl = TextEditingController();\n\n  @override\n  Widget build(BuildContext context) {\n    return CustomDropdown.search(\n      hintText: 'Select job role',\n      items: const ['Developer', 'Designer', 'Consultant', 'Student'],\n      controller: jobRoleCtrl,\n    );\n  }\n}\n```\n\n### 3. Custom dropdown with search request\n\n```dart\nimport 'package:animated_custom_dropdown/custom_dropdown.dart';\nimport 'package:flutter/material.dart';\n\nclass CustomDropdownExample extends StatefulWidget {\n  const CustomDropdownExample({Key? key}) : super(key: key);\n\n  @override\n  State\u003cCustomDropdownExample\u003e createState() =\u003e _CustomDropdownExampleState();\n}\n\nclass _CustomDropdownExampleState extends State\u003cCustomDropdownExample\u003e {\n  final jobRoleCtrl = TextEditingController();\n\n  Future\u003cList\u003cString\u003e\u003e getFakeRequestData(String query) async {\n    List\u003cString\u003e data = ['Developer', 'Designer', 'Consultant', 'Student'];\n\n    return await Future.delayed(const Duration(seconds: 1), () {\n      return data.where((e) {\n        return e.toLowerCase().contains(query.toLowerCase());\n      }).toList();\n    });\n  }\n\n  @override\n  Widget build(BuildContext context) {\n    return CustomDropdown.searchRequest(\n      futureRequest: getFakeRequestData,\n      hintText: 'Search job role',\n      controller: jobRoleCtrl,\n      futureRequestDelay: const Duration(seconds: 3),//it waits 3 seconds before start searching (before execute the 'futureRequest' function)\n    );\n  }\n}\n```\n\n## Preview\n\n![Example App](https://github.com/sithvothykiv/flutter_custom_dropdown/blob/master/readme_assets/preview.gif)\n\n\u003chr\u003e\n\n## Todos\n\n- [ ] Dropdown field/header builder.\n- [ ] Only when Tapped on any GestureDetector displaying the dropdown","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnext-dev-team%2Fflutter_custom_dropdown","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnext-dev-team%2Fflutter_custom_dropdown","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnext-dev-team%2Fflutter_custom_dropdown/lists"}