# phone_form_field 12.0.1

Flutter phone input integrated with flutter internationalization




## Installing
```
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.ir
flutter pub add phone_form_field
```
Published: 2026-10-04T13:08:42.041434Z
Expected archive SHA-256: d3516995899bc9c12711a862e327bcaac6805939f30a615323feef01f72f8afd

Available in cache; verification: upstream_checksum
## Direct dependencies
- circle_flags: ^7.0.0
- diacritic: ^0.1.6
- flutter: map[sdk:flutter]
- flutter_localizations: map[sdk:flutter]
- intl: >=0.20.3 <=1.0.0
- material_ui: ^1.5.0
- phone_numbers_parser: ^9.0.28

## Package README (untrusted upstream documentation)
# phone_form_field

[![pub package](https://img.shields.io/pub/v/phone_form_field.svg)](https://pub.dev/packages/phone_form_field)
[![pub points](https://img.shields.io/pub/points/phone_form_field.svg)](https://pub.dev/packages/phone_form_field/score)
[![MIT license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

A Flutter phone input integrated with Flutter internationalization. It is a
`FormField` that formats, validates and localizes international phone numbers,
and ships with a built-in country selector.

## Features

- Phone formatting localized by region
- Validation with localized error messages
- Localized country names (32 languages)
- Country selector available as a page, dialog, modal sheet or draggable sheet
- Built-in validators: required, valid, valid mobile, valid fixed line, valid country, ...
- Extensible: custom validators, custom country selector and custom flags
- Works as a `FormField` and supports autofill and copy paste
- Pure Dart/Flutter, no platform code, works on every platform
- Parsing delegated to the
  [phone_numbers_parser](https://pub.dev/packages/phone_numbers_parser) package

## Demo

Demo available at https://cedvdb.github.io/phone_form_field/

![demo](https://github.com/cedvdb/phone_form_field/blob/main/demo.gif?raw=true)

## Contents

- [Installation](#installation)
- [Usage](#usage)
- [Validation](#validation)
- [Country selector](#country-selector)
- [Internationalization](#internationalization)
- [Custom flags](#custom-flags)

## Installation

```sh
flutter pub add phone_form_field
```

## Usage

The simplest usage, without validation and without an initial value:

```dart
import 'package:phone_form_field/phone_form_field.dart';

PhoneFormField();
```

A more complete example:

```dart
final controller = PhoneController(initialValue: PhoneNumber.parse('+33'));

PhoneFormField(
  controller: controller,

  // how the country selector is presented, see "Country selector" below
  countrySelectorNavigator: const CountrySelectorNavigator.page(),

  // validation, see "Validation" below. Omit it for no validation.
  validator: PhoneValidator.required(context),

  // country button
  isCountrySelectionEnabled: true,
  isCountryButtonPersistent: true,
  countryButtonStyle: const CountryButtonStyle(
    showDialCode: true,
    showIsoCode: true,
    showFlag: true,
    flagSize: 16,
  ),

  onChanged: (phoneNumber) => print('changed into $phoneNumber'),

  // + all the parameters of TextField
  // + all the parameters of FormField
);

// do not forget to dispose the controller
controller.dispose();
```

### Main parameters

| Name | Default | Description |
|---|---|---|
| `controller` | `null` | A `PhoneController` used to read and change the value. Mutually exclusive with `initialValue` |
| `initialValue` | `null` | The initial `PhoneNumber`. Mutually exclusive with `controller` |
| `countrySelectorNavigator` | `CountrySelectorNavigator.page()` | How the country selector is presented |
| `isCountrySelectionEnabled` | `true` | Whether the user may select another country |
| `isCountryButtonPersistent` | `true` | Whether the country button stays visible when the national number is empty |
| `countryButtonStyle` | `CountryButtonStyle()` | Appearance of the country button |
| `validator` | `null` | A `PhoneNumberInputValidator`, see [Validation](#validation) |
| `onChanged` | `null` | Called whenever the value changes |
| `decoration` | `InputDecoration()` | The standard `TextField` decoration |
| ... | | All the `TextField` and `FormField` parameters are forwarded |

### Preloading flags

On the web the flags are assets downloaded on demand, which can cause a flash
when the country selector opens. Preload them to avoid it:

```dart
import 'package:phone_form_field/country_selector.dart';

// only the flags you care about
await CountrySelector.preloadFlags(isoCodes: [IsoCode.FR, IsoCode.BE]);

// or every flag
await PhoneFormField.preloadFlags();
```

## Validation

### Built-in validators

Built-in validators produce localized messages, they therefore take the
`BuildContext`:

| Validator | Description |
|---|---|
| `PhoneValidator.required(context)` | the national number must not be empty |
| `PhoneValidator.valid(context)` | the number must be valid |
| `PhoneValidator.validMobile(context)` | the number must be a valid mobile number |
| `PhoneValidator.validFixedLine(context)` | the number must be a valid fixed line number |
| `PhoneValidator.validType(context, type)` | the number must be valid for the given `PhoneNumberType` (`mobile`, `fixedLine`, ...) |
| `PhoneValidator.validCountry(context, countries)` | the number must belong to one of the supplied `List<IsoCode>` |

Each of them accepts an `errorText` parameter to override the built-in
translated message:

```dart
PhoneValidator.required(context, errorText: 'You must enter a value')
```

Note that `PhoneValidator.required` only rejects empty values and that the
`PhoneValidator.valid*` family only rejects invalid non empty values, combine
them to cover both cases.

Omitting `validator` (or passing `null`) disables validation entirely.

### Composing validators

Validators can be composed with `PhoneValidator.compose`, see the example below.
The order is important as the message of the first failing validator is the one
displayed.

```dart
PhoneFormField(
  // ...
  validator: PhoneValidator.compose([
    PhoneValidator.required(context),
    PhoneValidator.validMobile(context),
  ]),
);
```

### Custom validators

A validator is a `PhoneNumberInputValidator`, that is a
`String? Function(PhoneNumber?)` returning `null` when the value is valid and the
error message otherwise:

```dart
String? myValidator(PhoneNumber? number) {
  if (number == null || number.nsn.isEmpty) return 'Required';
  if (number.nsn.length < 4) return 'Too short';
  return null;
}

PhoneFormField(validator: myValidator);
```

## Country selector

The country selector is opened by tapping the country button of the field. Its
presentation is decided by the `countrySelectorNavigator` parameter.

### Presentation

* **`CountrySelectorNavigator.page()`**
  Opens a full screen page.

* **`CountrySelectorNavigator.dialog()`**
  Opens a dialog.
  Extra parameters: `width` and `height`.

* **`CountrySelectorNavigator.bottomSheet()`**
  Opens a bottom sheet expanding to all the available space in both axes.

* **`CountrySelectorNavigator.modalBottomSheet()`**
  Opens a modal bottom sheet expanded horizontally.
  Extra parameters:
  * `height` (double, default `null`): the height of the sheet, defaults to the
    available height minus 90px.

* **`CountrySelectorNavigator.draggableBottomSheet()`**
  Opens a modal bottom sheet expanded horizontally which may be dragged from a
  minimum to a maximum of the current available height. It uses the
  `DraggableScrollableSheet` widget internally.
  Extra parameters:
  * `initialChildSize` (double, default `0.7`): factor of the available height used when opening
  * `minChildSize` (double, default `0.25`): minimum factor of the available height
  * `maxChildSize` (double, default `0.85`): maximum factor of the available height
  * `borderRadius` (`BorderRadiusGeometry`, default to a 16px circular radius on the top corners)

### Shared parameters

All built-in navigators accept the following parameters:

| Name | Default | Description |
|---|---|---|
| `countries` | `null` | Countries available in the list view, all countries are listed when omitted |
| `favorites` | `null` | List of `IsoCode` to display on top of the list, e.g. `[IsoCode.FR, IsoCode.GB]` |
| `showDialCode` | `true` | Whether to display the country dial code as the list tile subtitle |
| `sortCountries` | `false` | Whether the countries are sorted alphabetically. When `false` the countries follow the order of the `countries` parameter (favorite countries are always listed in the supplied order) |
| `noResultMessage` | `null` | Message displayed when the search returns no result, a built-in localized message is used when omitted |
| `searchAutofocus` | `kIsWeb` | Whether the search box is focused when the selector opens |
| `subtitleStyle`, `titleStyle` | `null` | Text styles of the list items |
| `searchBoxDecoration`, `searchBoxTextStyle`, `searchBoxIconColor` | `null` | Styling of the search box |
| `scrollPhysics` | `null` | Scroll physics of the country list |

### Reusing the selector without the field

The list itself is also public, so it can be embedded anywhere:

```dart
import 'package:phone_form_field/country_selector.dart';

final isoCode = await Navigator.of(context).push<IsoCode>(
  MaterialPageRoute(
    builder: (_) => CountrySelector.page(
      onCountrySelected: (isoCode) => Navigator.pop(context, isoCode),
      showDialCode: true,
    ),
  ),
);
```

`CountrySelector.sheet(...)` is the equivalent for a compact, non full screen
presentation.

### Custom country selector

To fully customize how the selector is presented, extend
`CountrySelectorNavigator` and implement `show`, which must return the selected
`IsoCode` (or `null` when the user dismissed it):

```dart
class MyCountrySelectorNavigator extends CountrySelectorNavigator {
  const MyCountrySelectorNavigator() : super(searchAutofocus: true);

  @override
  Future<IsoCode?> show(BuildContext context) async {
    // present your own UI and return the selected country
    return showMyOwnCountryPicker(context);
  }
}

PhoneFormField(
  // ...
  countrySelectorNavigator: const MyCountrySelectorNavigator(),
);
```

You can reuse `CountrySelector.sheet(...)` or `CountrySelector.page(...)` inside
your navigator to keep the built-in list and only change the presentation.

## Internationalization

### Registering the delegates

The package ships its own strings (labels, error messages, country names) and
needs its delegate registered. There is usually no reason to replace your own
`localizationsDelegates`: spread the ones of the package into your list so that
the other localized packages of your application keep working.

```dart
import 'package:phone_form_field/phone_form_field.dart';

MaterialApp(
  localizationsDelegates: const [
    // your application and your other packages
    ...AppLocalizations.localizationsDelegates,
    // required by phone_form_field
    ...PhoneFieldLocalization.delegates,
  ],
  supportedLocales: const [
    ...AppLocalizations.supportedLocales,
    ...PhoneFieldLocalization.supportedLocales,
  ],
  // ...
);
```

`AppLocalizations` stands for whatever your application uses, for example the
classes generated by `flutter gen-l10n`, `intl` or `easy_localization`.

`PhoneFieldLocalization.delegates` also contains the global `material_ui`
delegates that the widgets read. If you already provide those yourself, add only
the strings of this package:

```dart
localizationsDelegates: const [
  ...myDelegates,
  PhoneFieldLocalization.delegate,
];
```

### Reading the strings

```dart
final strings = PhoneFieldLocalization.of(context);

Text(strings.phoneNumber);
```

### Localized country names

Country names are localized as well and fall back to english when the country is
not translated for the current locale:

```dart
final countryName = PhoneFieldLocalization.of(context).countryName(IsoCode.FR);
```

### Supported languages

- ar
- ca
- ckb
- cs
- de
- el
- en
- es
- fa
- fr
- he
- hi
- hu
- it
- ja
- ko
- ku
- nb
- nl
- pl
- pt
- ro
- ru
- sk
- sv
- th
- tr
- uk
- ur
- uz
- vi
- zh

If one of the languages you target is not supported, you can submit a pull
request in the phone_form_field repository.

## Custom flags

Some users have expressed their need to change some flags due to political or
stylistic reasons, or to add their own flags. To do so refer to this issue:
https://github.com/cedvdb/phone_form_field/issues/222

## License

MIT, see [LICENSE](LICENSE).
```

## Changelog

## [12.0.1]
- Added `PhoneFieldLocalization.delegate` and `PhoneFieldLocalization.supportedLocales`.

## [12.0.0]

- [Breaking]: The [flutter_country_selector](https://github.com/cedvdb/flutter_country_selector) package has been merged into this one. The country selector sources, arbs and generated localizations live here now, which removes the dependency this package had on `flutter_country_selector` and the lockstep releases it required (both packages always had to be published together). `flutter_country_selector` 3.0.0 is a thin re-export of `package:phone_form_field/country_selector.dart`; the dependency graph of your application does not change as `phone_form_field` 11.x already pulled that package in.
- [Breaking]: Removed the members deprecated in the 10.x series: `CountrySelectorNavigator.addSeparator` (it was always on), `CountrySelectorNavigator.showCountryCode` (use `showDialCode`), `CountrySelectorNavigator.appBarTheme` (wrap the input in a `Theme` instead), `CountrySelectorNavigator.navigate` (use `show`), `CountryChip` (use `CountryButton`), `PhoneFormField.textAlign` (it had no effect, change the text directionality instead) and `PhoneValidator.none` (pass `null` as `validator`).
- The country names of the selector are now part of the phone field arbs, so 32 locales are supported by the country selector. They fall back to english for the countries that are not translated.
- Fixed `CountrySelectorNavigator.dialog()` ignoring its `showDialCode` parameter.
- Fixed `CountrySelectorNavigator.page()` ignoring its `searchBoxDecoration`, `searchBoxTextStyle`, `searchBoxIconColor` and `scrollPhysics` parameters.
- `CountrySelectorNavigator.draggableBottomSheet()` now accepts `useRootNavigator` (it was stored internally but could never be set).
- Added Romanian localization
- Added Japanese and Thai translations



## [11.0.1]
- Fix codegen error

## [11.0.0]
- [Breaking]: Require dart >=3.5.0
- [Breaking]: Require flutter >=3.47.0
- Migrate to the new material_ui package which has been decoupled from the flutter framework in flutter 3.47.0
- Bump dependencies

## [10.0.18]
- Upgrade [phone_numbers_parser](https://github.com/cedvdb/phone_numbers_parser/releases/tag/v9.0.24) to 9.0.24 to add support for new numbers 

## [10.0.17]

- Fixes issues with semantics
- Upgraded the [flutter_country_selector](https://github.com/cedvdb/flutter_country_selector) to 1.0.19 to address semantic focus issues

## [10.0.16]

- Fixes build runner issue by updating circle_flags dependency version.
- Update dependencies to the latest version.

## [10.0.15]

- Added readOnly
- Added canRequestFocus

## [10.0.14]

- Added onTapUpOutside

## [10.0.13]

- Adds Polish localization

## [10.0.12]

- Fixes focus node disposal logic

## [10.0.11+13]

- Auto publish workflow changes

## [10.0.10]

- Fixes controller disposal logic

## [10.0.9]

- Fix text selection on `LimitMaxLengthFormatter`
- Fix a memory leak in the PhoneFormFieldState widget
- Update dependencies to the lastest version

## [10.0.8]

- Added `borderRadius` to `CountryButtonStyle` to allow configuring the borderRadius of the country button InkWell.
- Adjusted padding to be more in line with latest changes for text fields

## [10.0.7]

- Added `shouldLimitLengthByCountry` property to `PhoneFormField`

## [10.0.6]

- Added `dropdownIconColor` property to `CountryButtonStyle`

## [10.0.5]

- handle disabled state for `CircleFlag` in `CountryButtonStyle` using gray scale color filter to give more natural handling of disabled state

## [10.0.4]

- added backgroundColor property to BottomSheet, DraggableModalSheet, ModalSheet, Dialog

## [10.0.3]

- added Catalan localization

## [10.0.2]

- Fix fixes issue where area codes wrapped in parentheses cannot be deleted

## [10.0.1]

- Add forgotten deprecation warning

## [10.0.0]

- Add missing countries and favorites params to CountrySelectorNavigator.page factory
- Pass the current theme to navigator page

## [9.2.8]

- Fix phone number format for some countries

## [9.2.8]

- Fix phone number format for some countries

## [9.2.7]

- added Slovak localization
- added Czech localization

## [9.2.6]

- added Vietnamese localization messages
- added localizations for Hebrew
- upgrade phone_numbers_parser to v9.0.0
- phone numbers now format in their national format.

## [9.2.5]

- fix: handle change on country selection. onChanged callback would trigger if country field is updated
- added Korean localization messages

## [9.2.4]

- upgrade metadata
- Do not preload flags by default anymore. Use [PhoneFormField.preloadFlags()] to preload flags

## [9.2.3]

- upgrade flutter country selector dependency

## [9.2.2]

- added language selection to demo
- fixed a bug where country selection language

## [9.2.1]

- fix readme

## [9.2.0]

- add missing translation messages
- add Hungarian localization messages
- fix RTL
- added `showDropdownIndicator`
- [deprecate] country button stylings properties in favor of one `countryButtonStyle` property
- add showDropdownIcon bool

## [9.1.0]

- allow voip numbers
- add some missing localization messages
- upgrade metadata in underlying package

## [9.0.5]

- Fixing using controller's value as initial value #218

## [9.0.4]

- improve semantics after trying talk back

## [9.0.3]

- improve semantics

## [9.0.2]

- reformat national number on country changed

## [9.0.1]

- unexport circle flags

## [9.0.0]

- Various fixes for country selection UX
- Various fixes for input cursor issues
- Improve accessibility touches surfaces
- Improve accessibility labels
- Some visual tweaks
- Added some missing countries
- [Breaking] : no validation done by default
- [Breaking] : provided validators now require a context parameter
- [Breaking] : `LocalizedCountryRegistry` removed. If you were using it to localize a country name, you should use `CountrySelectorLocalization.of(context).countryName(isoCode)`.
- [Deprecated] : `isCountryChipPersistent` in favor of `isCountryButtonPersistent`.
- [Deprecated] : `shouldFormat`, it is now always ON by default
- [Deprecated] : `defaultCountry`, you should now use either `initialValue` or provide a controller with an initial value.
- [Deprecated] : `CountrySelectorNavigator.searchDelegate()` changed into `CountrySelectorNavigator.PageNavigator()`.
- Internal refactor in the hope of making contribution easier

## [8.1.1]

- Upgraded phone_numbers_parser lib to 8.1.0
- Added norwegian language (PR #203) thanks @sidlatau
- Added onTapOutside (PR #195) thanks @andgar2010
- Added Uzbek language (PR #192) thanks @akbarali1
- various fix in languages (thanks @Hpanery, @mohn93, @themmfa, @farzadaqajani)

## [8.1.0]

- flag loaded from assets (revert from previous version)
- flags in country list should now render instantaneously

## [8.0.0]

- Temporary reduced memory footprint of flags by loading them via network to gauge impact (reverted)
- upgrade to latest phone metadata
- upgrade parser
- [isCountryChipPersistent] now default to true, as setting it to false results in a buggy focus behavior.
  This might be deprecated in the future if no solution is found.
- small file reorganization

## [7.1.0]

- Relax intl version matching
- Fix invalid initial value from controller

## [7.0.7]

- Solve parameter show dial code not found to show or hide dial code

## [7.0.6]

- upgrade to phone numbers parser 7.0.1
- upgrade circle flags to 1.0.4
- fix flag rendering issues
- fix parsing issue were some phone numbers were incorrectly parsed when the start of the phone number was the same as country code

## [7.0.5]

- Better rendering of flags on the web
- Added lost Netherlands Antilla's flag

## [7.0.4]

- Fixed flag size in draggable bottom sheet
- Fixed initial svg rendering

## [7.0.3] 03/12/2022

- use svg instead of png reducing the memory footprint by about 800kb.
- added titleStyle and subtitleStyle to search delegate
- added flag size

## [7.0.2] 10/08/2022

- updated phone metadata
- updated parser library
- added new customization properties to country selector navigator: `titleStyle` & `subtitleStyle`. For searchbox: `InputDecoration`, `TextStyle`.
- added scroll physics to bottom sheet navigator
- added ukrainian language
- improved russian language
- fix example

## [7.0.1] 27/07/2022

- fix country code not shown when there is an hint
- added `isCountryChipPersistent`
- added `isCountrySelectionEnabled`

## [7.0.0] 25/07/2022

- [Breaking] Update phone_numbers_parser major version

## [6.1.1] 22/07/2022

- Read RTL support
- Removed diacritics from search
- Added height and width to dialog

## [6.1.0] 26/05/2022

- Revert RTL support as it is incomplete. (Feel free to resubmit a PR).
- Fix a country selection search input auto focus issue.
- Removed the inkWell around country code, which now has thinner clicking area.
  This was done to clean the internals.

## [6.0.0] 14/05/2022

- require flutter 3

## [5.0.4] 11/05/2022

- fix empty text direction bug

## [5.0.3] 26/04/2022

- correctly remove listener from controller on dispose.
- fix error that happened when a controller was reused.

## [5.0.2] 24/04/2022

- added el language (@kwstasarva)
- added rtl text direction support (@minusium)

## [5.0.1] 05/04/2022

- fix inkwell overflow on error
- update docs

## [5.0.0] 01/04/2022

- fix bug when copy pasting an incomplete phone number like "+33" the phone number was interpreted as
  `PhoneNumber(isoCode: FR, nsn: '33')`, now is correctly `PhoneNumber(isoCode: FR, nsn: '')`
- updated country flags for better cultural accuracy
- Remove deprecated constructor, use factories instead
- Fix a cursor bug where the cursor would be misplaced
- Added `PageNavigator` for country selection.
- Refactor of internal to accommodate for different UI for country selection
- Slight refactor of search process
- Added possibility of styling hint text (thanks @xvrh)
- [Breaking] use updated version of phone_number_parser which uses `IsoCode` for iso codes instead
  of plain string.
- Added ci tests

## [4.6.0] 01/04/2022

- Added factories for country selector navigator.
  Example `CountrySelectorNavigator.dialog()` instead of `DialogCountrySelectorNavigator` as it's simpler for auto completion.
- renamed param `selectorNavigator` to `countrySelectorNavigator`

## [4.5.3] 23 / 03 / 2022

- Fix inner border when there is a theme with focussed border

## [4.5.2] 23 / 03 / 2022

- Export country translator

## [4.5.1] 25 / 02 / 2022

- Added a property called 'countryCodeStyle' to allow the customization of the TextStyle of country code. Thanks @moazelsawaf
- Considering the size of the prefix icon ( if used ) while calculating the width of the CountryCodeChip InkWell. Thanks @moazelsawaf

## [4.5.0] 18 / 02 / 2022

- Allow country code to be always visible when there is no label + an hint text
- Fix editing issue where the cursor was moving forward

## [4.4.0] 07 / 11 / 2021

- upgraded phone parser dependency which fix some validity issues
- added swedish language
- added turkish language

## [4.3.1] 23 / 10 / 2021

- fix a focus issue when opening country selection
- search bar in country selection is no auto focus false except for the web

## [4.3.0] 18 / 10 / 2021

- Added most of textfield params to the phone input.
- Added method to select the current national number from the controller
- Changed how controllers worked under the hood
- Fix an issue where a phone number could not start with its country code
- uses phone_numbers_parser v4.1.0

## [4.2.0] 16 / 10 / 2021

- [deprecated] PhoneValidator.invalid in favor of PhoneValidator.valid as the naming did not make sens and was backward.

## [4.1.0 ] 15 / 10 / 2021

- expose onEditingComplete and textInputAction
- Update phone_number_parser library to 4.0.1, that library has breaking changes which could be reflected in the usage here

## [4.0.0] 01 / 10 / 2021

### Fixes

- fix phone number type, thanks @emrsi
- fix reset and usage as a FormField in general
- fix onChanged & onSaved
- fix late initialization error when no country was selected in bottom sheet selector

### UI

- added localized phone formatter
- added DraggableModalBottomSheet, thanks @emrsi

# Validation

- Add PhoneValidator class to easily customize validation and defaults localization error messages
- Add PhoneFormField `validator` property
- **[BREAKING CHANGE]** Remove `PhoneFormField` properties `errorText` & `phoneNumberType`. Define `validator` property instead with `PhoneValidator.invalid*`

# Misc

- refactored internals
- [Breaking] light parser was removed.
- [Breaking] exposed `autoFillHints` and removed the `withHint` param
- [Breaking] renamed all instances of `dialCode` to `countryCode` as dial code was semantically incorrect.

### Note

This major version was a big rework of the library and is packed with fixes.
Thus it was decided that it was not worth it to keep backward compatibility and therefor there are multiple breaking changes

## [3.0.0] - 27 / 08 / 2021

- removed deprecated selector config
- added controllers to control the value
- added support for copy pasting

## [2.0.0] - 16 / 08 / 2021

- deprecating SelectorConfig in favor of CountrySelectorNavigator
- added unit tests
- fixes for auto fill and copy paste

## [1.2.0] - 25 / 05 / 2021

- Minor release introducing SelectorConfig.
- Fix problems with input focussing in cover sheet.

```
  // cover sheet
  PhoneFormField(
    // ...
    selectorConfig: SelectorConfigCoverSheet()
  )
  // dialog
  PhoneFormField(
    // ...
    selectorConfig: SelectorConfigBottomSheet()
  )
  // bottom sheet
  PhoneFormField(
    // ...
    selectorConfig: SelectorConfigBottomSheet(null)
  )
```

## [1.1.3] - 25 / 05 / 2021

- fix initial value not setting up correctly
- Added different types of Country selector display: SelectorDisplay.coversBody, SelectorDisplay.coversLower. The old value is coversLower and the new default value is coversBody.

## [1.1.2] - 20 / 05 / 2021

- minor changelog fix.

## [1.1.1] - 20 / 05 / 2021

- Added key to exported widgets.

## [1.1.0] - 19 / 05 / 2021

- [Breaking] : some classes from the package phone_numbers_parser aren't exported anymore. Mostly classes that are not intended to be used with this package.
- Added example for widgets FlagDialCodeChip and CountrySelector
- Added default values for FlagDialCodeChip and removed some unused values.

## [1.0.2] - 23 / 04 / 2021

- Upped dependency phone_numbers_parser to 0.1.3
- Added phoneNumberType input to validate against specific types (mobile, fixed line)

## [1.0.1] - 23 / 04 / 2021

- Fixed validity issue (issue #1)
- Allow country to be searched by dial code (issue #2)
- Sort country search results to have more meaningful results at the top
- Upped dependency phone_numbers_parser to 0.1.0

## [1.0.0] - 21 / 04 / 2021

- Reworked internal so the PhoneFormField behaves exactly like a TextFormField

## [0.0.6] - 15 / 04 / 2021

- InputDecoration renamed to decoration to match formField

## [0.0.5] - 15 / 04 / 2021

- Match cursor color with border color

## [0.0.4] - 13 / 04 / 2021

- Default font size 14

## [0.0.3] - 13 / 04 / 2021

- Breaking: inputBorder parameter replaced by inputDecoration for more manageability

## [0.0.2] - 12 / 04 / 2021

- Fix unresponsive onSave

## [0.0.1] - 12 / 04 / 2021

- initial release







 
