Viewing version 12.0.1. Open the latest package page.

phone_form_field

12.0.1

Flutter phone input integrated with flutter internationalization

Download archive

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 FormField and 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: 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:

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.delegate and PhoneFieldLocalization.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_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]

[10.0.17]

[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

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

VersionPublishedArchiveSHA-256
0.0.1On demandDownload0162565a…fa7d55
0.0.2On demandDownload1f60f169…dcb17c
0.0.3On demandDownloadaf104c28…2af9b5
0.0.4On demandDownload53f7d7b1…a81d85
0.0.5On demandDownloada70324e3…a9e0dd
0.0.6On demandDownloadaa01067e…3c175c
1.0.0On demandDownload56256afd…da1e63
1.0.1On demandDownloadf96f5410…e4275d
1.0.2On demandDownload6c472078…58aa84
1.1.0On demandDownload10225579…a300cc
1.1.1On demandDownload1f37ed2d…aa4f0b
1.1.2On demandDownload6a1aec9a…fcd6f1
1.1.3On demandDownloadbac5d696…583a0a
1.1.4On demandDownloade21fdadf…647acb
1.2.0On demandDownload8bbbc387…229934
2.0.0On demandDownload1bf31bad…250674
3.0.1On demandDownload666cd766…4b44ff
4.0.0On demandDownload20f09458…21ef6d
4.1.0On demandDownload20ba03cb…887d64
4.2.0On demandDownloada246e29f…48c0e3
4.3.0On demandDownload02bdf82b…80083e
4.3.1On demandDownloadcd43895e…e9aad4
4.4.0On demandDownload0244708f…10c04c
4.5.0On demandDownload01289ddf…f0500f
4.5.1On demandDownload6f5d714d…d33123
4.5.2On demandDownload4642109f…4efd98
4.5.3On demandDownloaddf663152…f42ec1
4.6.0On demandDownload40844e7a…ecb8fb
5.0.0On demandDownloadaa107b4a…290c16
5.0.1On demandDownload9c3b0ad2…5d728f
5.0.2On demandDownload7e2e6d38…3f9efb
5.0.3On demandDownloadfe9dd0fe…6e0505
5.0.4On demandDownload0ac27382…d380be
6.0.0On demandDownload8c1a8e55…ac2657
6.1.0On demandDownload4a809445…787e20
6.1.1On demandDownload45aca7bd…61e35e
7.0.0On demandDownload330501e2…6882ec
7.0.1On demandDownload41fef332…3ffa1a
7.0.2On demandDownload376f79de…92b2c0
7.0.3On demandDownloadc3ff0f65…d0b3c4
7.0.4On demandDownloadda59273b…64423d
7.0.5On demandDownloadf39c036b…225faf
7.0.6On demandDownload3f550a87…87d41c
7.1.0On demandDownloadcf36bf7c…48e872
8.0.0On demandDownloadf048098f…c84df0
8.1.0On demandDownload0e02d554…3ccd74
8.1.1On demandDownloadf91ede10…5b5a63
9.0.0On demandDownloadc0336bce…2d1935
9.0.1On demandDownloadd719054f…069815
9.0.2On demandDownload9815f3b3…856731
9.0.3On demandDownload2e567a27…1392ba
9.0.4On demandDownload34433c8a…58f369
9.0.5On demandDownloade5fc2f91…c3c42d
9.1.0On demandDownload8ee5f354…f63f31
9.2.0On demandDownload7b2529d2…6d95e5
9.2.1On demandDownload4295ec22…44121a
9.2.2On demandDownloadc4d3002f…1d0865
9.2.3On demandDownload723eb07a…d29614
9.2.4On demandDownload00cedc26…004896
9.2.5On demandDownload14f3c6f0…a305c7
9.2.6On demandDownload70980b2a…a76356
9.2.7On demandDownloadea1c236d…628223
9.2.8On demandDownloade65088bd…51eb93
10.0.0On demandDownload03653a22…795a36
10.0.1On demandDownloadd7c12db9…76ef7d
10.0.2On demandDownload34284b32…c370cd
10.0.3On demandDownload86b78602…4c91fb
10.0.4On demandDownload2392a120…661cf1
10.0.5On demandDownload7c137b5a…578a7d
10.0.6On demandDownload4a7e7416…caa0a7
10.0.7On demandDownload1e42cd4c…30dced
10.0.8On demandDownload4848bf7c…a56c5b
10.0.9On demandDownload52e7eb30…2b23e1
10.0.10On demandDownload79da2519…fdef6f
10.0.11On demandDownload0ccefe8f…b8165f
10.0.11+12On demandDownloada48a77e5…0e875a
10.0.11+13On demandDownload88bfc290…2750b2
10.0.12On demandDownloadb0a472fa…babe1b
10.0.13On demandDownloade37d132c…1a29c0
10.0.14On demandDownload084afe10…026c89
10.0.15On demandDownloadc4adcf1f…f96ca2
10.0.16On demandDownloadcfa05f6f…8ffb57
10.0.17On demandDownload9d177604…bdbe98
10.0.18On demandDownloadd2ef37cf…31b0de
11.0.1On demandDownload6ee45b96…a9e30f
12.0.0On demandDownloadaeb80ea6…b96b29
12.0.1Cached · Upstream SHA-256 matchedDownloadd3516995…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"