country_code_picker 1.3.7

  • Readme
  • Changelog
  • Example
  • Installing
  • 98

Pub

country_code_picker #

A flutter package for showing a country code selector.

It supports i18n.

Usage #

Just put the component in your application setting the onChanged callback.


@override
 Widget build(BuildContext context) => new Scaffold(
     body: Center(
       child: CountryCodePicker(
         onChanged: print,
         // Initial selection and favorite can be one of code ('IT') OR dial_code('+39')
         initialSelection: 'IT',
         favorite: ['+39','FR'],
         // optional. Shows only country name and flag
         showCountryOnly: false,
         // optional. Shows only country name and flag when popup is closed.
         showOnlyCountryWhenClosed: false,
         // optional. aligns the flag and the Text left
         alignLeft: false,
       ),
     ),
 );

Example:


void _onCountryChange(CountryCode countryCode) {
    //TODO : manipulate the selected country code here
    print("New Country selected: " + countryCode.toString());
  }

i18n #

Just add the CountryLocalizations.delegate in the list of your app delegates

 return new MaterialApp(
      supportedLocales: [
        Locale('en'),
        Locale('it'),
        Locale('en'),
      ],
      localizationsDelegates: [
        CountryLocalizations.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],

Contributions #

Contributions of any kind are more than welcome! Feel free to fork and improve country_code_picker in any way you want, make a pull request, or open an issue.

1.3.7 #

  • Add customList property

  • Add exit button in dialog

1.3.6 #

  • Add comparator property

1.3.4 #

  • Add showFlagDialog and showFlagMain

1.3.3 #

  • Fix a bug in localization

1.3.2 #

  • Add enable property in order to use the disable the button

  • Add textOverflow property

1.3.1 #

  • Add flagWidth property

1.3.0 #

  • Fixed selection dialog length

  • Added i18n with CountryLocalizations

1.2.4 #

Fixed a bug that was making impossible to update initial selection

1.2.3 #

Update country code of Republica Dominicana.

1.2.2 #

Fix code list.

1.2.0 #

Added Ability to render custom Widget instead of package one's.

Bug fix.

1.1.7 #

Flag is now optional. Fix bug on initState.

1.1.5 #

OnlyCountrymode now also displays only the country on Textwidget when closed.

1.1.4 #

Add possibility to show only country name

1.1.1 #

Update allowed dart version and modify description

1.1.0 #

Changed CElement with CountryCode and fix error on favorite null

1.0.4 #

Update country name with translated version

1.0.3 #

Update flags dimension to reduce application size

1.0.2 #

Update framework compatiblity

1.0.1 #

Correct README and update screenshots

1.0.0 #

Use png flags instead of a font

0.2.2 #

Added textStyle and padding as widget parameters

0.2.1 #

Added some documentation

0.2.0 #

Now onChanged has a full CElement as argument and not only a string. (issue #4)

0.1.3 #

Favorite and initial selection can be one of code or dial code

0.1.2 #

Favorite and initial selection can be one of code or dial code

0.1.1 #

Tested with dart 2

0.1.0 #

Removed flags in iOS because they show up weirdly.

0.0.2 #

Add favorite countries option.

0.0.1 #

Initial release

example/lib/main.dart

import 'package:country_code_picker/country_code_picker.dart';
import 'package:country_code_picker/country_localizations.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      supportedLocales: [
        Locale('en'),
        Locale('it'),
        Locale('en'),
      ],
      localizationsDelegates: [
        CountryLocalizations.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      home: new Scaffold(
        appBar: new AppBar(
          title: const Text('CountryPicker Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: <Widget>[
              CountryCodePicker(
                onChanged: print,
                // Initial selection and favorite can be one of code ('IT') OR dial_code('+39')
                initialSelection: 'IT',
                favorite: ['+39', 'FR'],
                showFlag: false,
                customList: ['IT', 'FR'],
                showFlagDialog: true,
                comparator: (a, b) => b.name.compareTo(a.name),
                //Get the country information relevant to the initial selection
                onInit: (code) => print("${code.name} ${code.dialCode}"),
              ),
              SizedBox(
                width: 400,
                height: 60,
                child: Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: CountryCodePicker(
                    onChanged: print,
                    initialSelection: 'TF',
                    showCountryOnly: true,
                    showOnlyCountryWhenClosed: true,
                    alignLeft: true,
                    builder: (countryCode) {
                      return Text('${countryCode.code}');
                    },
                  ),
                ),
              ),
              SizedBox(
                width: 400,
                height: 60,
                child: Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: CountryCodePicker(
                    onChanged: print,
                    initialSelection: 'TF',
                    showCountryOnly: true,
                    showOnlyCountryWhenClosed: true,
                    favorite: ['+39', 'FR'],
                  ),
                ),
              ),
              SizedBox(
                width: 100,
                height: 60,
                child: Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: CountryCodePicker(
                    enabled: false,
                    onChanged: (c) => c.name,
                    initialSelection: 'TF',
                    showCountryOnly: true,
                    showOnlyCountryWhenClosed: true,
                    favorite: ['+39', 'FR'],
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  country_code_picker: ^1.3.7

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:country_code_picker/country_code_picker.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
97
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
98
Learn more about scoring.

We analyzed this package on Mar 31, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.6
  • Flutter: 1.12.13+hotfix.8

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.2.2 <3.0.0
flutter 0.0.0
Transitive dependencies
collection 1.14.11 1.14.12
meta 1.1.8
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8