Viewing version 12.0.1. Open the latest package page.
phone_form_field
12.0.1Flutter phone input integrated with flutter internationalization
Readme
phone_form_field
pub package pub points MIT 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
FormFieldand supports autofill and copy paste - Pure Dart/Flutter, no platform code, works on every platform
- Parsing delegated to the phone_numbers_parser package
Demo
Demo available at https://cedvdb.github.io/phone_form_field/
demo
Contents
Installation
flutter pub add phone_form_field
Usage
The simplest usage, without validation and without an initial value:
import 'package:phone_form_field/phone_form_field.dart';
PhoneFormField();
A more complete example:
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 |
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:
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:
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.
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:
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:widthandheight. -
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, defaultnull): 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 theDraggableScrollableSheetwidget internally. Extra parameters:initialChildSize(double, default0.7): factor of the available height used when openingminChildSize(double, default0.25): minimum factor of the available heightmaxChildSize(double, default0.85): maximum factor of the available heightborderRadius(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:
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):
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.
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:
localizationsDelegates: const [
...myDelegates,
PhoneFieldLocalization.delegate,
];
Reading the strings
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:
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.
Changelog
[12.0.1]
- Added
PhoneFieldLocalization.delegateandPhoneFieldLocalization.supportedLocales.
[12.0.0]
- [Breaking]: The 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_selectorand the lockstep releases it required (both packages always had to be published together).flutter_country_selector3.0.0 is a thin re-export ofpackage:phone_form_field/country_selector.dart; the dependency graph of your application does not change asphone_form_field11.x already pulled that package in. - [Breaking]: Removed the members deprecated in the 10.x series:
CountrySelectorNavigator.addSeparator(it was always on),CountrySelectorNavigator.showCountryCode(useshowDialCode),CountrySelectorNavigator.appBarTheme(wrap the input in aThemeinstead),CountrySelectorNavigator.navigate(useshow),CountryChip(useCountryButton),PhoneFormField.textAlign(it had no effect, change the text directionality instead) andPhoneValidator.none(passnullasvalidator). - 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 itsshowDialCodeparameter. - Fixed
CountrySelectorNavigator.page()ignoring itssearchBoxDecoration,searchBoxTextStyle,searchBoxIconColorandscrollPhysicsparameters. CountrySelectorNavigator.draggableBottomSheet()now acceptsuseRootNavigator(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 to 9.0.24 to add support for new numbers
[10.0.17]
- Fixes issues with semantics
- Upgraded the 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
borderRadiustoCountryButtonStyleto 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
shouldLimitLengthByCountryproperty toPhoneFormField
[10.0.6]
- Added
dropdownIconColorproperty toCountryButtonStyle
[10.0.5]
- handle disabled state for
CircleFlaginCountryButtonStyleusing 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
countryButtonStyleproperty - 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] :
LocalizedCountryRegistryremoved. If you were using it to localize a country name, you should useCountrySelectorLocalization.of(context).countryName(isoCode). - [Deprecated] :
isCountryChipPersistentin favor ofisCountryButtonPersistent. - [Deprecated] :
shouldFormat, it is now always ON by default - [Deprecated] :
defaultCountry, you should now use eitherinitialValueor provide a controller with an initial value. - [Deprecated] :
CountrySelectorNavigator.searchDelegate()changed intoCountrySelectorNavigator.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 correctlyPhoneNumber(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
PageNavigatorfor 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
IsoCodefor 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 ofDialogCountrySelectorNavigatoras it's simpler for auto completion. - renamed param
selectorNavigatortocountrySelectorNavigator
[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
validatorproperty - [BREAKING CHANGE] Remove
PhoneFormFieldpropertieserrorText&phoneNumberType. Definevalidatorproperty instead withPhoneValidator.invalid*
Misc
- refactored internals
- [Breaking] light parser was removed.
- [Breaking] exposed
autoFillHintsand removed thewithHintparam - [Breaking] renamed all instances of
dialCodetocountryCodeas 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
Installing
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add 'phone_form_field:12.0.1'pubspec.yaml
name: phone_form_field
description: Flutter phone input integrated with flutter internationalization
version: 12.0.1
homepage: https://github.com/cedvdb/phone_form_field
environment:
sdk: ">=3.5.0 <4.0.0"
flutter: ">=3.47.0"
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
intl: ">=0.20.3 <=1.0.0"
diacritic: ^0.1.6
circle_flags: ^7.0.0
material_ui: ^1.5.0
phone_numbers_parser: ^9.0.28
dev_dependencies:
flutter_test:
sdk: flutter
leak_tracker_flutter_testing: ^3.0.10
flutter_lints: ^6.0.0
flutter:
generate: true
Version history
| Version | Published | Archive | SHA-256 |
|---|---|---|---|
| 0.0.1 | On demand | Download | 0162565a…fa7d55 |
| 0.0.2 | On demand | Download | 1f60f169…dcb17c |
| 0.0.3 | On demand | Download | af104c28…2af9b5 |
| 0.0.4 | On demand | Download | 53f7d7b1…a81d85 |
| 0.0.5 | On demand | Download | a70324e3…a9e0dd |
| 0.0.6 | On demand | Download | aa01067e…3c175c |
| 1.0.0 | On demand | Download | 56256afd…da1e63 |
| 1.0.1 | On demand | Download | f96f5410…e4275d |
| 1.0.2 | On demand | Download | 6c472078…58aa84 |
| 1.1.0 | On demand | Download | 10225579…a300cc |
| 1.1.1 | On demand | Download | 1f37ed2d…aa4f0b |
| 1.1.2 | On demand | Download | 6a1aec9a…fcd6f1 |
| 1.1.3 | On demand | Download | bac5d696…583a0a |
| 1.1.4 | On demand | Download | e21fdadf…647acb |
| 1.2.0 | On demand | Download | 8bbbc387…229934 |
| 2.0.0 | On demand | Download | 1bf31bad…250674 |
| 3.0.1 | On demand | Download | 666cd766…4b44ff |
| 4.0.0 | On demand | Download | 20f09458…21ef6d |
| 4.1.0 | On demand | Download | 20ba03cb…887d64 |
| 4.2.0 | On demand | Download | a246e29f…48c0e3 |
| 4.3.0 | On demand | Download | 02bdf82b…80083e |
| 4.3.1 | On demand | Download | cd43895e…e9aad4 |
| 4.4.0 | On demand | Download | 0244708f…10c04c |
| 4.5.0 | On demand | Download | 01289ddf…f0500f |
| 4.5.1 | On demand | Download | 6f5d714d…d33123 |
| 4.5.2 | On demand | Download | 4642109f…4efd98 |
| 4.5.3 | On demand | Download | df663152…f42ec1 |
| 4.6.0 | On demand | Download | 40844e7a…ecb8fb |
| 5.0.0 | On demand | Download | aa107b4a…290c16 |
| 5.0.1 | On demand | Download | 9c3b0ad2…5d728f |
| 5.0.2 | On demand | Download | 7e2e6d38…3f9efb |
| 5.0.3 | On demand | Download | fe9dd0fe…6e0505 |
| 5.0.4 | On demand | Download | 0ac27382…d380be |
| 6.0.0 | On demand | Download | 8c1a8e55…ac2657 |
| 6.1.0 | On demand | Download | 4a809445…787e20 |
| 6.1.1 | On demand | Download | 45aca7bd…61e35e |
| 7.0.0 | On demand | Download | 330501e2…6882ec |
| 7.0.1 | On demand | Download | 41fef332…3ffa1a |
| 7.0.2 | On demand | Download | 376f79de…92b2c0 |
| 7.0.3 | On demand | Download | c3ff0f65…d0b3c4 |
| 7.0.4 | On demand | Download | da59273b…64423d |
| 7.0.5 | On demand | Download | f39c036b…225faf |
| 7.0.6 | On demand | Download | 3f550a87…87d41c |
| 7.1.0 | On demand | Download | cf36bf7c…48e872 |
| 8.0.0 | On demand | Download | f048098f…c84df0 |
| 8.1.0 | On demand | Download | 0e02d554…3ccd74 |
| 8.1.1 | On demand | Download | f91ede10…5b5a63 |
| 9.0.0 | On demand | Download | c0336bce…2d1935 |
| 9.0.1 | On demand | Download | d719054f…069815 |
| 9.0.2 | On demand | Download | 9815f3b3…856731 |
| 9.0.3 | On demand | Download | 2e567a27…1392ba |
| 9.0.4 | On demand | Download | 34433c8a…58f369 |
| 9.0.5 | On demand | Download | e5fc2f91…c3c42d |
| 9.1.0 | On demand | Download | 8ee5f354…f63f31 |
| 9.2.0 | On demand | Download | 7b2529d2…6d95e5 |
| 9.2.1 | On demand | Download | 4295ec22…44121a |
| 9.2.2 | On demand | Download | c4d3002f…1d0865 |
| 9.2.3 | On demand | Download | 723eb07a…d29614 |
| 9.2.4 | On demand | Download | 00cedc26…004896 |
| 9.2.5 | On demand | Download | 14f3c6f0…a305c7 |
| 9.2.6 | On demand | Download | 70980b2a…a76356 |
| 9.2.7 | On demand | Download | ea1c236d…628223 |
| 9.2.8 | On demand | Download | e65088bd…51eb93 |
| 10.0.0 | On demand | Download | 03653a22…795a36 |
| 10.0.1 | On demand | Download | d7c12db9…76ef7d |
| 10.0.2 | On demand | Download | 34284b32…c370cd |
| 10.0.3 | On demand | Download | 86b78602…4c91fb |
| 10.0.4 | On demand | Download | 2392a120…661cf1 |
| 10.0.5 | On demand | Download | 7c137b5a…578a7d |
| 10.0.6 | On demand | Download | 4a7e7416…caa0a7 |
| 10.0.7 | On demand | Download | 1e42cd4c…30dced |
| 10.0.8 | On demand | Download | 4848bf7c…a56c5b |
| 10.0.9 | On demand | Download | 52e7eb30…2b23e1 |
| 10.0.10 | On demand | Download | 79da2519…fdef6f |
| 10.0.11 | On demand | Download | 0ccefe8f…b8165f |
| 10.0.11+12 | On demand | Download | a48a77e5…0e875a |
| 10.0.11+13 | On demand | Download | 88bfc290…2750b2 |
| 10.0.12 | On demand | Download | b0a472fa…babe1b |
| 10.0.13 | On demand | Download | e37d132c…1a29c0 |
| 10.0.14 | On demand | Download | 084afe10…026c89 |
| 10.0.15 | On demand | Download | c4adcf1f…f96ca2 |
| 10.0.16 | On demand | Download | cfa05f6f…8ffb57 |
| 10.0.17 | On demand | Download | 9d177604…bdbe98 |
| 10.0.18 | On demand | Download | d2ef37cf…31b0de |
| 11.0.1 | On demand | Download | 6ee45b96…a9e30f |
| 12.0.0 | On demand | Download | aeb80ea6…b96b29 |
| 12.0.1 | Cached · Upstream SHA-256 matched | Download | d3516995…2f8afd |
Dependencies
circle_flags "^7.0.0"
diacritic "^0.1.6"
flutter {
"sdk": "flutter"
}
flutter_localizations {
"sdk": "flutter"
}
intl "\u003e=0.20.3 \u003c=1.0.0"
material_ui "^1.5.0"
phone_numbers_parser "^9.0.28"