{"id":32293516,"url":"https://github.com/kteken10/flutter_flag_selector","last_synced_at":"2026-02-23T19:05:49.237Z","repository":{"id":282406945,"uuid":"948475889","full_name":"kteken10/flutter_flag_selector","owner":"kteken10","description":"Flutter Flag Selector🌍 A Ultimate Flutter country picker with SVG flags \u0026 20+ languages. Fully customizable BottomSheet/Dialog/PopUp modes. Supports search by name/code/dial code. MIT Licensed.","archived":false,"fork":false,"pushed_at":"2026-01-12T21:47:09.000Z","size":2290,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-09T12:44:20.895Z","etag":null,"topics":["country-code","country-code-picker","country-codes","country-flags","country-information","country-list-dial-code","country-picker","country-select","country-selector","dart","dial","flag-picker","flag-selector","flutter","flutter-flag-selector","flutter-ui","i18n","multilingual","ui-components"],"latest_commit_sha":null,"homepage":"https://dissangkevin.online","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kteken10.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-14T12:04:04.000Z","updated_at":"2026-01-12T21:47:13.000Z","dependencies_parsed_at":"2025-03-14T13:34:26.360Z","dependency_job_id":"87345527-a13c-4655-a481-d25056282044","html_url":"https://github.com/kteken10/flutter_flag_selector","commit_stats":null,"previous_names":["kteken10/flutter_flag_selector"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/kteken10/flutter_flag_selector","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kteken10%2Fflutter_flag_selector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kteken10%2Fflutter_flag_selector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kteken10%2Fflutter_flag_selector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kteken10%2Fflutter_flag_selector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kteken10","download_url":"https://codeload.github.com/kteken10/flutter_flag_selector/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kteken10%2Fflutter_flag_selector/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29751852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["country-code","country-code-picker","country-codes","country-flags","country-information","country-list-dial-code","country-picker","country-select","country-selector","dart","dial","flag-picker","flag-selector","flutter","flutter-flag-selector","flutter-ui","i18n","multilingual","ui-components"],"created_at":"2025-10-23T03:33:23.685Z","updated_at":"2026-02-23T19:05:49.231Z","avatar_url":"https://github.com/kteken10.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flutter Flag Selector\n\n[![Pub Version](https://img.shields.io/pub/v/flutter_flag_selector)](https://pub.dev/packages/flutter_flag_selector)\n[![Pub Likes](https://img.shields.io/pub/likes/flutter_flag_selector)](https://pub.dev/packages/flutter_flag_selector)\n[![Pub Popularity](https://img.shields.io/pub/popularity/flutter_flag_selector)](https://pub.dev/packages/flutter_flag_selector)\n[![Pub Points](https://img.shields.io/pub/points/flutter_flag_selector)](https://pub.dev/packages/flutter_flag_selector)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\nA highly customizable Flutter country picker with 20+ languages, SVG flags, and multiple display modes. Perfect for phone number inputs and international forms.\n\n![Flutter Flag Selector Demo](https://raw.githubusercontent.com/kteken10/flutter_flag_selector/main/screenshots/demo.gif)\n\n## Why Choose Flutter Flag Selector?\n\nLooking for the perfect **country picker** for your Flutter app? Here's why developers choose `flutter_flag_selector`:\n\n| Feature | flutter_flag_selector | country_code_picker | country_picker | intl_phone_number_input |\n|---------|----------------------|---------------------|----------------|-------------------------|\n| **SVG Flags** | ✅ High-quality | ❌ PNG only | ❌ PNG only | ✅ |\n| **Languages** | ✅ 20+ languages | ⚠️ Limited | ⚠️ Limited | ⚠️ Limited |\n| **Display Modes** | ✅ 4 modes | ⚠️ 1-2 modes | ⚠️ 1-2 modes | ⚠️ 1 mode |\n| **Customization** | ✅ 30+ properties | ⚠️ Basic | ⚠️ Basic | ⚠️ Basic |\n| **Search Functionality** | ✅ Advanced | ✅ Basic | ✅ Basic | ✅ |\n| **Phone Number Input** | ✅ Integrated | ✅ Integrated | ❌ | ✅ Full support |\n| **Country Code Support** | ✅ Complete | ✅ Complete | ✅ Complete | ✅ Complete |\n| **Cross-Platform** | ✅ All platforms | ✅ All platforms | ✅ All platforms | ✅ All platforms |\n| **Active Maintenance** | ✅ Active | ⚠️ Varies | ⚠️ Varies | ✅ Active |\n\n### Key Advantages\n\n- 🌍 **20+ Languages**: Multi-language support for country names, perfect for international apps\n- 🎨 **Highly Customizable**: 30+ properties to customize every aspect of the **flag selector**\n- 🏳️ **SVG Flags**: Crisp, scalable flags that look perfect on any screen\n- 🔍 **Advanced Search**: Search by country name, code, or **dial code**\n- 📱 **4 Display Modes**: Choose between bottom sheet, dialog, popup menu, or draggable sheet\n- 💻 **Cross-Platform**: Works seamlessly on Web, Android, iOS, macOS, Linux, and Windows\n- 🚀 **Easy Integration**: Simple API for quick implementation in your Flutter app\n\n## 🎥 Demo\n\n| BottomSheet Country Modal Option | Dialog Country Option | PopUp Country Option | Draggable Sheet Option |\n|:-------------------------------:|:--------------------:|:-------------------:|:---------------------:|\n| ![Image](https://github.com/user-attachments/assets/d6009893-e961-469f-b83d-a962b1a2df6b) | ![Image](https://github.com/user-attachments/assets/2af10790-c1ac-436e-af42-e50fd2113d2b) | ![Image](https://github.com/user-attachments/assets/6795e06b-b5de-494f-aeee-d8a45539d159) | *Coming soon* |\n\n## Installation\n\nAdd `flutter_flag_selector` to your `pubspec.yaml` file:\n\n```yaml\ndependencies:\n  flutter_flag_selector: ^latest_version\n```\n\nThen run:\n\n```bash\nflutter pub get\n```\n\n## Quick Start\n\n### Basic Country Picker\n\nThe simplest way to use the **country picker**:\n\n```dart\nimport 'package:flutter/material.dart';\nimport 'package:flutter_flag_selector/flutter_flag_selector.dart';\n\nclass MyApp extends StatelessWidget {\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      body: Center(\n        child: FlagSelector(\n          onFlagSelectorCountryChanged: (country) {\n            print('Selected country: ${country.name}');\n            print('Country code: ${country.code}');\n            print('Dial code: ${country.dialCode}');\n          },\n        ),\n      ),\n    );\n  }\n}\n```\n\n## Examples\n\n### Example 1: Phone Number Input with Country Code\n\nPerfect for international **phone number** inputs:\n\n```dart\nFlagSelector(\n  flagSelectorLanguageCode: 'en',\n  flagSelectorInitialCountry: 'us',\n  flagSelectorOptionType: FlagSelectorOptionType.modalBottomSheet,\n  onFlagSelectorCountryChanged: (country) {\n    // Update phone number input with country dial code\n    phoneNumberController.text = country.dialCode;\n  },\n  flagSelectorTextStyle: TextStyle(\n    fontSize: 16,\n    fontWeight: FontWeight.w500,\n  ),\n)\n```\n\n### Example 2: Customized Bottom Sheet\n\nCreate a beautifully customized bottom sheet **flag selector**:\n\n```dart\nFlagSelector(\n  flagSelectorOptionType: FlagSelectorOptionType.modalBottomSheet,\n  flagSelectorModalTitle: 'Choose Your Country',\n  flagSelectorModalTitleStyle: TextStyle(\n    fontSize: 22,\n    fontWeight: FontWeight.bold,\n    color: Colors.blue,\n  ),\n  flagSelectorSelectedCountryItemColor: Colors.blue.shade100,\n  flagSelectorCountryItemHeight: 60.0,\n  onFlagSelectorCountryChanged: (country) {\n    print('Selected: ${country.name}');\n  },\n)\n```\n\n### Example 3: Dialog Mode\n\nUse a centered dialog for **country selection**:\n\n```dart\nFlagSelector(\n  flagSelectorOptionType: FlagSelectorOptionType.dialog,\n  flagSelectorModalTitle: 'Select Country',\n  flagSelectorModalHeightFactor: 0.8,\n  onFlagSelectorCountryChanged: (country) {\n    Navigator.pop(context);\n    // Handle country selection\n  },\n)\n```\n\n### Example 4: Popup Menu Mode\n\nCompact popup menu for space-constrained layouts:\n\n```dart\nFlagSelector(\n  flagSelectorOptionType: FlagSelectorOptionType.popupMenu,\n  flagSelectorWidth: 200,\n  flagSelectorHeight: 50,\n  onFlagSelectorCountryChanged: (country) {\n    print('Country: ${country.name}');\n  },\n)\n```\n\n### Example 5: Multi-Language Support\n\nDisplay country names in different languages:\n\n```dart\nFlagSelector(\n  flagSelectorLanguageCode: 'fr', // French\n  onFlagSelectorCountryChanged: (country) {\n    print(country.getName('fr')); // Get French name\n  },\n)\n\n// Or switch dynamically\nString currentLanguage = 'es'; // Spanish\nFlagSelector(\n  flagSelectorLanguageCode: currentLanguage,\n  onFlagSelectorCountryChanged: (country) {\n    print(country.getName(currentLanguage));\n  },\n)\n```\n\n### Example 6: Form Integration\n\nIntegrate with Flutter forms:\n\n```dart\nclass CountryForm extends StatefulWidget {\n  @override\n  _CountryFormState createState() =\u003e _CountryFormState();\n}\n\nclass _CountryFormState extends State\u003cCountryForm\u003e {\n  Country? selectedCountry;\n  \n  @override\n  Widget build(BuildContext context) {\n    return Form(\n      child: Column(\n        children: [\n          FlagSelector(\n            flagSelectorInitialCountry: selectedCountry?.code,\n            onFlagSelectorCountryChanged: (country) {\n              setState(() {\n                selectedCountry = country;\n              });\n            },\n          ),\n          if (selectedCountry != null)\n            Text('Selected: ${selectedCountry!.name} (${selectedCountry!.dialCode})'),\n        ],\n      ),\n    );\n  }\n}\n```\n\n### Example 7: Custom Styling\n\nFully customize the appearance:\n\n```dart\nFlagSelector(\n  flagSelectorDecoration: BoxDecoration(\n    color: Colors.white,\n    borderRadius: BorderRadius.circular(12),\n    border: Border.all(color: Colors.blue, width: 2),\n    boxShadow: [\n      BoxShadow(\n        color: Colors.blue.withOpacity(0.1),\n        blurRadius: 10,\n        spreadRadius: 2,\n      ),\n    ],\n  ),\n  flagSelectorTextStyle: TextStyle(\n    fontSize: 18,\n    fontWeight: FontWeight.bold,\n    color: Colors.blue.shade900,\n  ),\n  flagSelectorFlagWidth: 40,\n  flagSelectorFlagHeight: 30,\n  flagSelectorGap: 12,\n  onFlagSelectorCountryChanged: (country) {\n    // Handle selection\n  },\n)\n```\n\n### Example 8: Filtered Country List\n\nShow only specific countries:\n\n```dart\nFlagSelector(\n  flagSelectorCountries: [\n    CountryService.byCode('us')!,\n    CountryService.byCode('ca')!,\n    CountryService.byCode('gb')!,\n    CountryService.byCode('fr')!,\n    CountryService.byCode('de')!,\n  ],\n  onFlagSelectorCountryChanged: (country) {\n    print('Selected: ${country.name}');\n  },\n)\n```\n\n### Example 9: Advanced Search Configuration\n\nCustomize the search functionality:\n\n```dart\nFlagSelector(\n  flagSelectorShowSearch: true,\n  flagSelectorSearchHintText: 'Search by name or code...',\n  flagSelectorSearchDecoration: InputDecoration(\n    prefixIcon: Icon(Icons.search),\n    border: OutlineInputBorder(\n      borderRadius: BorderRadius.circular(10),\n    ),\n  ),\n  onFlagSelectorCountryChanged: (country) {\n    // Handle selection\n  },\n)\n```\n\n### Example 10: Draggable Sheet Mode\n\nUse the draggable sheet for a modern UX:\n\n```dart\nFlagSelector(\n  flagSelectorOptionType: FlagSelectorOptionType.draggableSheet,\n  flagSelectorModalTitle: 'Choose Country',\n  onFlagSelectorCountryChanged: (country) {\n    print('Selected: ${country.name}');\n  },\n)\n```\n\n## Use Cases\n\n### 1. Phone Number Input Forms\nPerfect for apps requiring international **phone number** input. The **country picker** automatically provides the correct **dial code** for each country.\n\n### 2. User Registration\nAllow users to select their country during registration. The **flag selector** provides an intuitive interface with visual country flags.\n\n### 3. Shipping Address Forms\nE-commerce apps can use the **country picker** in shipping address forms to help users quickly select their destination country.\n\n### 4. Language Selection\nUse the multi-language support to display country names in the user's preferred language, improving the international user experience.\n\n### 5. Analytics and Reporting\nTrack user locations by country selection, useful for analytics and understanding your user base distribution.\n\n### 6. Currency Selection\nSince each country includes currency information, you can use the **country picker** to help users select their preferred currency.\n\n### 7. Timezone Selection\nCountries include timezone data, making it easy to implement timezone selection based on country choice.\n\n## 🎌 Supported Languages\n\nThe Flutter Flag Selector package supports the following languages for country name translations:\n\n| Code | Language    | Example       |\n|------|-------------|---------------|\n| en   | English     | Andorra       |\n| ru   | Russian     | Андорра       |\n| pl   | Polish      | Andora        |\n| ua   | Ukrainian   | Андорра       |\n| cz   | Czech       | Andorra       |\n| by   | Belarusian  | Андора        |\n| pt   | Portuguese  | Andorra       |\n| es   | Spanish     | Andorra       |\n| ro   | Romanian    | Andorra       |\n| bg   | Bulgarian   | Андора        |\n| de   | German      | Andorra       |\n| fr   | French      | Andorre       |\n| nl   | Dutch       | Andorra       |\n| it   | Italian     | Andorra       |\n| cn   | Chinese     | 安道尔         |\n| ee   | Estonian    | Andorra       |\n| jp   | Japanese    | アンドラ       |\n| he   | Hebrew      | אנדורה        |\n| tr   | Turkish     | Andorra       |\n| ar   | Arabic      | أندورا        |\n\nYou can set the display language using the `flagSelectorLanguageCode` property:\n\n```dart\nFlagSelector(\n  flagSelectorLanguageCode: 'fr',  // Display country names in French\n  // other properties...\n)\n```\n\n## 🎯 Display Modes\n\nThe package supports 4 different display modes for selecting countries:\n\n1. **Modal Bottom Sheet** (default) - A bottom sheet that slides up from the bottom\n2. **Dialog** - A centered dialog modal\n3. **Popup Menu** - A popup menu positioned relative to the selector\n4. **Draggable Sheet** - A resizable sheet that can be dragged up and down\n\nYou can choose the display mode using the `flagSelectorOptionType` property:\n\n```dart\nFlagSelector(\n  flagSelectorOptionType: FlagSelectorOptionType.dialog, // or modalBottomSheet, popupMenu, draggableSheet\n  // other properties...\n)\n```\n\n## API Reference\n\n### Main Selector Properties\n\n| Property | Type | Description | Default Value |\n| --- | --- | --- | --- |\n| `flagSelectorLanguageCode` | String | Language code for country names | 'en' |\n| `flagSelectorOptionType` | FlagSelectorOptionType | Display mode (modalBottomSheet, dialog, popupMenu, draggableSheet) | modalBottomSheet |\n| `flagSelectorCountries` | List\u003cCountry\u003e | Available countries list | defaultCountries |\n| `flagSelectorInitialCountry` | String? | Initially selected country code | null |\n| `onFlagSelectorCountryChanged` | ValueChanged\u003cCountry\u003e? | Function called when a country is selected | null |\n| `flagSelectorPadding` | EdgeInsetsGeometry? | Internal padding of the selector | null |\n| `flagSelectorDecoration` | BoxDecoration? | Decoration of the main container | Default decoration with border radius |\n| `flagSelectorBackgroundColor` | Color? | Background color of the selector | null |\n| `flagSelectorGap` | double | Space between elements | 8.0 |\n| `flagSelectorWidth` | double? | Selector width | null (automatic) |\n| `flagSelectorHeight` | double? | Selector height | null (automatic) |\n| `flagSelectorClipBehavior` | Clip? | How to clip the selector's content | Clip.none |\n| `flagSelectorConstraints` | BoxConstraints? | Size constraints for the selector | null |\n| `flagSelectorForegroundDecoration` | Decoration? | Foreground decoration drawn on top of the selector | null |\n| `flagSelectorTransform` | Matrix4? | Transform to apply to the selector | null |\n| `flagSelectorTransformAlignment` | AlignmentGeometry? | Alignment of the transform operation | null |\n| `flagSelectorMargin` | EdgeInsetsGeometry? | External margin of the selector | null |\n| `flagSelectorFlagWidth` | double | Flag width | 30.0 |\n| `flagSelectorFlagHeight` | double | Flag height | 20.0 |\n| `flagSelectorFlagBuilder` | Widget Function(BuildContext, Country)? | Custom builder for the flag | null |\n| `flagSelectorTextStyle` | TextStyle? | Text style for the country name | Theme.of(context).textTheme.bodyMedium |\n| `flagSelectorCountryNameBuilder` | String Function(Country)? | Custom builder for the country name | null |\n| `flagSelectorDropdownIcon` | Widget? | Custom dropdown icon | Icon(Icons.arrow_drop_down) |\n| `flagSelectorIconSize` | double | Icon size | 24.0 |\n| `flagSelectorIconColor` | Color? | Icon color | Theme.of(context).iconTheme.color |\n\n### Modal Properties\n\n| Property | Type | Description | Default Value |\n| --- | --- | --- | --- |\n| `flagSelectorModalBuilder` | ModalPickerBuilder? | Custom builder for the entire modal | null |\n| `flagSelectorPickerStyle` | CountryPickerStyle? | Global style for the picker | Default style |\n| `flagSelectorShowModalTitle` | bool | Show the modal title | true |\n| `flagSelectorModalTitle` | String? | Modal title text | 'Select Country' |\n| `flagSelectorModalTitleStyle` | TextStyle? | Modal title style | Theme.of(context).textTheme.titleMedium |\n| `flagSelectorModalTitlePadding` | EdgeInsetsGeometry? | Padding for the modal title | null |\n| `flagSelectorModalHeightFactor` | double | Modal height (as a factor of the screen) | 0.7 |\n| `flagSelectorCountryItemBuilder` | CountryItemBuilder? | Custom builder for country items | null |\n| `flagSelectorCountryItemPadding` | EdgeInsetsGeometry? | Padding for country items | null |\n| `flagSelectorCountryItemHeight` | double? | Height of country items | null |\n| `flagSelectorCountryItemColor` | Color? | Background color of country items | null |\n| `flagSelectorSelectedCountryItemColor` | Color? | Background color for the selected country | Colors.blueAccent |\n\n### Search Properties\n\n| Property | Type | Description | Default Value |\n| --- | --- | --- | --- |\n| `flagSelectorSearchBuilder` | SearchInputBuilder? | Custom builder for the search input | null |\n| `flagSelectorSearchDecoration` | InputDecoration? | Decoration for the search input | null |\n| `flagSelectorSearchTextStyle` | TextStyle? | Style for search text | null |\n| `flagSearchEnabled` | bool? | Enable/disable search | true |\n| `flagSelectorSearchHintText` | String? | Hint text for search | 'Search countries...' |\n| `flagSelectorSearchPadding` | EdgeInsetsGeometry? | Padding for the search input | null |\n| `flagSelectorShowSearch` | bool | Show the search bar | true |\n| `flagSelectorSearchContainerColor` | Color? | Background color of the search container | null |\n| `flagSelectorSearchContainerBorderRadius` | BorderRadius? | Border radius of the search container | null |\n| `flagSelectorSearchContainerBorder` | BoxBorder? | Border of the search container | null |\n| `flagSelectorSearchContainerShadow` | List\u003cBoxShadow\u003e? | Shadows of the search container | null |\n| `flagSelectorSearchContainerMargin` | EdgeInsetsGeometry? | Margins of the search container | null |\n| `flagSelectorSearchContainerPadding` | EdgeInsetsGeometry? | Padding of the search container | null |\n| `flagSelectorSearchInputPadding` | EdgeInsetsGeometry? | Padding of the search input | null |\n| `flagSelectorSearchContainerWidth` | double? | Width of the search container | null |\n| `flagSelectorSearchContainerHeight` | double? | Height of the search container | null |\n| `flagSelectorSearchContainerConstraints` | BoxConstraints? | Constraints of the search container | null |\n\n## Country Model\n\nThe package uses a comprehensive `Country` model with the following properties:\n\n```dart\nclass Country {\n  final String code;            // ISO 2-letter code (e.g., 'us')\n  final String name;            // Country name (in English)\n  final String dialCode;        // Phone dial code (e.g., '+1')\n  final String iso3;            // ISO 3-letter code (e.g., 'USA')\n  final String currency;        // Currency code (e.g., 'USD')\n  final String currencyName;    // Currency name (e.g., 'US Dollar')\n  final String emoji;           // Flag emoji (e.g., '🇺🇸')\n  final List\u003cString\u003e timezones; // Timezones (e.g., ['UTC-05:00'])\n  final String region;          // Region (e.g., 'Americas')\n  final Map\u003cString, String\u003e translations; // Name translations in multiple languages\n}\n```\n\n## Using the Country Service\n\nThe package also includes a service for working with country data:\n\n```dart\n// Initialize the service (do this at app startup)\nCountryService.initialize();\n\n// Get a country by code\nCountry? usa = CountryService.byCode('us');\n\n// Search countries by currency\nList\u003cCountry\u003e euroCountries = CountryService.byCurrency('EUR');\n\n// Search countries by region\nList\u003cCountry\u003e europeanCountries = CountryService.byRegion('Europe');\n\n// Advanced search\nList\u003cCountry\u003e results = CountryService.advancedSearch(\n  region: 'Europe',\n  currency: 'EUR',\n  query: 'fr'\n);\n```\n\n## Flag Assets\n\nThe package includes SVG flags for all countries. These assets are bundled with the package and accessed automatically. If you want to use custom flag images, you can provide your own implementation using the `flagSelectorFlagBuilder` property.\n\n## Troubleshooting\n\n### Issue: Flags not displaying\n\n**Solution**: Ensure that `flutter_svg` is properly added to your dependencies. The flags are SVG files bundled with the package.\n\n### Issue: Country names not in the correct language\n\n**Solution**: Verify that you're using a supported language code. Check the [Supported Languages](#-supported-languages) section for available codes.\n\n### Issue: Modal not closing after selection\n\n**Solution**: This should happen automatically. If it doesn't, ensure you're using the latest version of the package. You can also manually close the modal in the `onFlagSelectorCountryChanged` callback.\n\n### Issue: Search not working\n\n**Solution**: Make sure `flagSelectorShowSearch` is set to `true` (default) and `flagSearchEnabled` is not set to `false`.\n\n### Issue: Initial country not selected\n\n**Solution**: Verify that the `flagSelectorInitialCountry` value is a valid ISO 2-letter country code (e.g., 'us', 'fr', 'jp'). The code is case-insensitive.\n\n### Issue: Custom styling not applying\n\n**Solution**: Ensure you're using the correct property names. All customization properties start with `flagSelector`. Check the [API Reference](#api-reference) for the complete list of properties.\n\n### Issue: Performance issues with large country lists\n\n**Solution**: The package is optimized for performance, but if you're using a very large custom country list, consider filtering the list to only include relevant countries.\n\n## Contributing\n\nContributions are welcome! We love to see the community getting involved. Here's how you can help:\n\n1. **Fork the repository**\n2. **Create your feature branch** (`git checkout -b feature/amazing-feature`)\n3. **Make your changes** following our code style guidelines\n4. **Add tests** for new features\n5. **Update documentation** (README.md, CHANGELOG.md)\n6. **Commit your changes** (`git commit -m 'feat: add amazing feature'`)\n7. **Push to the branch** (`git push origin feature/amazing-feature`)\n8. **Open a Pull Request**\n\n### Development Setup\n\n1. Clone the repository\n2. Run `flutter pub get`\n3. Run `flutter analyze` to check for issues\n4. Run `flutter test` to run tests\n5. Check the example app in the `example/` folder\n\n### Code Style\n\n- Follow the [Dart Style Guide](https://dart.dev/guides/language/effective-dart/style)\n- Use meaningful variable and function names\n- Add documentation comments for public APIs\n- Write tests for new features\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Links\n\n- [Pub.dev Package](https://pub.dev/packages/flutter_flag_selector)\n- [GitHub Repository](https://github.com/kteken10/flutter_flag_selector)\n- [Issue Tracker](https://github.com/kteken10/flutter_flag_selector/issues)\n\n---\n\nMade with ❤️ for the Flutter community\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkteken10%2Fflutter_flag_selector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkteken10%2Fflutter_flag_selector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkteken10%2Fflutter_flag_selector/lists"}