UNICODE-Venture / uni_country_city_picker

A Light-weight Flutter package for country and city picking, supporting English and Arabic seamlessly.
https://pub.dev/packages/uni_country_city_picker
Apache License 2.0
1 stars 2 forks source link

Country and city picker library Crafted by the UNICODE Team

A Light-weight Flutter package for country and city picking, supporting English and Arabic seamlessly πŸ‡ΈπŸ‡¦πŸ’™πŸ‡§πŸ‡©β€οΈπŸ‡ͺπŸ‡¬

Features support

UniCountryCityPicker by Saif

Getting started

Please have a look at our /example project for a better understanding of implementations.

// [UniCountryServices] is a class that provides services to get countries and cities.
final _uniCountryServices = UniCountryServices.instance;
List<Country> countriesAndCities = await _uniCountryServices.getCountriesAndCities();

Example with an widget

/// [UniCountryServices] is a class that provides services for countries and cities.
final _uniCountryServices = UniCountryServices.instance;

class CountriesAndCitiesView extends StatefulWidget {
  const CountriesAndCitiesView({super.key});

  @override
  State<CountriesAndCitiesView> createState() => _CountriesAndCitiesViewState();
}

class _CountriesAndCitiesViewState extends State<CountriesAndCitiesView> {
  /// List of countries and cities
  List<Country> countriesAndCities = [];

  @override
  void initState() {
    super.initState();
    // Get the countries and cities on init of the view
    _getCountriesAndCities();
  }

  /// Get the countries and cities from the package
  Future _getCountriesAndCities() async {
    countriesAndCities = await _uniCountryServices.getCountriesAndCities();
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("Uni Country City Picker")),
      body: ListView.builder(
          itemCount: countriesAndCities.length,
          itemBuilder: (_, i) {
            Country country = countriesAndCities[i];
            return ListTile(
              onTap: () => print(country.toMap()),
              title: Text(
                "${country.nameEn} (${country.flag}${country.dialCode})",
                style: const TextStyle(
                  fontWeight: FontWeight.w500,
                ),
              ),
            );
          }),
    );
  }
}