From 2a35d65e65d3bbd7d307ed6392935fff8c2bb3f1 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Sun, 8 Mar 2020 22:49:29 +0100 Subject: [PATCH] 1.3.0 --- CHANGELOG.md | 6 + README.md | 15 +- example/.gitignore | 40 +- example/.metadata | 6 +- example/README.md | 16 +- example/android/.gitignore | 13 +- example/android/app/build.gradle | 18 +- .../android/app/src/debug/AndroidManifest.xml | 7 + .../android/app/src/main/AndroidManifest.xml | 25 +- .../example/helloexample/MainActivity.java | 13 - .../com/example/example/MainActivity.kt | 12 + .../app/src/profile/AndroidManifest.xml | 7 + example/android/build.gradle | 4 +- example/android/gradle.properties | 3 + .../android/gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- example/android/gradlew | 160 -- example/android/gradlew.bat | 90 - example/country_code_picker _example.iml | 18 - .../country_code_picker _example_android.iml | 27 - example/ios/.gitignore | 63 +- example/ios/Flutter/AppFrameworkInfo.plist | 2 +- .../ios/Flutter/flutter_export_environment.sh | 10 - example/ios/Runner.xcodeproj/project.pbxproj | 124 +- .../xcshareddata/xcschemes/Runner.xcscheme | 6 +- example/ios/Runner/AppDelegate.h | 6 - example/ios/Runner/AppDelegate.m | 13 - example/ios/Runner/AppDelegate.swift | 13 + .../Icon-App-1024x1024@1x.png | Bin 11112 -> 10932 bytes example/ios/Runner/Info.plist | 4 +- example/ios/Runner/Runner-Bridging-Header.h | 1 + example/ios/Runner/main.m | 9 - example/lib/main.dart | 115 +- example/pubspec.yaml | 6 +- lib/country_code.dart | 49 +- lib/country_code_picker.dart | 53 +- lib/country_codes.dart | 1468 ++++++++++++++--- lib/country_localizations.dart | 63 + lib/i18n/en.json | 252 +++ lib/i18n/fr.json | 257 +++ lib/i18n/it.json | 257 +++ lib/selection_dialog.dart | 122 +- pubspec.yaml | 7 +- 43 files changed, 2518 insertions(+), 864 deletions(-) create mode 100644 example/android/app/src/debug/AndroidManifest.xml delete mode 100644 example/android/app/src/main/java/com/example/helloexample/MainActivity.java create mode 100644 example/android/app/src/main/kotlin/com/example/example/MainActivity.kt create mode 100644 example/android/app/src/profile/AndroidManifest.xml delete mode 100644 example/android/gradle/wrapper/gradle-wrapper.jar delete mode 100755 example/android/gradlew delete mode 100644 example/android/gradlew.bat delete mode 100644 example/country_code_picker _example.iml delete mode 100644 example/country_code_picker _example_android.iml delete mode 100644 example/ios/Flutter/flutter_export_environment.sh delete mode 100644 example/ios/Runner/AppDelegate.h delete mode 100644 example/ios/Runner/AppDelegate.m create mode 100644 example/ios/Runner/AppDelegate.swift create mode 100644 example/ios/Runner/Runner-Bridging-Header.h delete mode 100644 example/ios/Runner/main.m create mode 100644 lib/country_localizations.dart create mode 100644 lib/i18n/en.json create mode 100644 lib/i18n/fr.json create mode 100644 lib/i18n/it.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 33e6fc8..b3297d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 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 diff --git a/README.md b/README.md index 8f5e167..dfa1581 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ A flutter package for showing a country code selector. +It supports i18n. + @@ -15,8 +17,8 @@ Just put the component in your application setting the onChanged callback. @override Widget build(BuildContext context) => new Scaffold( - body: new Center( - child: new CountryCodePicker( + body: Center( + child: CountryCodePicker( onChanged: print, // Initial selection and favorite can be one of code ('IT') OR dial_code('+39') initialSelection: 'IT', @@ -33,19 +35,12 @@ Just put the component in your application setting the onChanged callback. ``` -Note: Your onChanged function can be any function of the type shown below: - -```dart -(CountryCode)->dynamic - -``` - Example: ```dart void _onCountryChange(CountryCode countryCode) { - //Todo : manipulate the selected country code here + //TODO : manipulate the selected country code here print("New Country selected: " + countryCode.toString()); } diff --git a/example/.gitignore b/example/.gitignore index dee655c..ae1f183 100644 --- a/example/.gitignore +++ b/example/.gitignore @@ -1,9 +1,37 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp .DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ .dart_tool/ - -.packages -.pub/ - -build/ - .flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Web related +lib/generated_plugin_registrant.dart + +# Exceptions to above rules. +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages diff --git a/example/.metadata b/example/.metadata index 1634cfb..01d2dcb 100644 --- a/example/.metadata +++ b/example/.metadata @@ -4,5 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: 3b309bda072a6b326e8aa4591a5836af600923ce - channel: beta + revision: 0b8abb4724aa590dd0f429683339b1e045a1594d + channel: stable + +project_type: app diff --git a/example/README.md b/example/README.md index 1a1fb1a..a135626 100644 --- a/example/README.md +++ b/example/README.md @@ -1,8 +1,16 @@ -# hello_example +# example -Demonstrates how to use the hello plugin. +A new Flutter project. ## Getting Started -For help getting started with Flutter, view our online -[documentation](https://flutter.io/). +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) + +For help getting started with Flutter, view our +[online documentation](https://flutter.dev/docs), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/example/android/.gitignore b/example/android/.gitignore index 65b7315..bc2100d 100644 --- a/example/android/.gitignore +++ b/example/android/.gitignore @@ -1,10 +1,7 @@ -*.iml -*.class -.gradle +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat /local.properties -/.idea/workspace.xml -/.idea/libraries -.DS_Store -/build -/captures GeneratedPluginRegistrant.java diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 3f7c6cb..0f6a5e5 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -22,10 +22,15 @@ if (flutterVersionName == null) { } apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 27 + compileSdkVersion 28 + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } lintOptions { disable 'InvalidPackage' @@ -33,12 +38,12 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.salvatore.countrycodepicker" + applicationId "com.example.example" minSdkVersion 16 - targetSdkVersion 27 + targetSdkVersion 28 versionCode flutterVersionCode.toInteger() versionName flutterVersionName - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { @@ -55,7 +60,8 @@ flutter { } dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + androidTestImplementation 'androidx.test:runner:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' } diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..c208884 --- /dev/null +++ b/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 5f28283..8bc6007 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -1,12 +1,5 @@ - - - - + package="com.example.example"> - - + + diff --git a/example/android/app/src/main/java/com/example/helloexample/MainActivity.java b/example/android/app/src/main/java/com/example/helloexample/MainActivity.java deleted file mode 100644 index 0746cc7..0000000 --- a/example/android/app/src/main/java/com/example/helloexample/MainActivity.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.example.helloexample; - -import android.os.Bundle; -import io.flutter.app.FlutterActivity; -import io.flutter.plugins.GeneratedPluginRegistrant; - -public class MainActivity extends FlutterActivity { - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - GeneratedPluginRegistrant.registerWith(this); - } -} diff --git a/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt b/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt new file mode 100644 index 0000000..1656503 --- /dev/null +++ b/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt @@ -0,0 +1,12 @@ +package com.example.example + +import androidx.annotation.NonNull; +import io.flutter.embedding.android.FlutterActivity +import io.flutter.embedding.engine.FlutterEngine +import io.flutter.plugins.GeneratedPluginRegistrant + +class MainActivity: FlutterActivity() { + override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { + GeneratedPluginRegistrant.registerWith(flutterEngine); + } +} diff --git a/example/android/app/src/profile/AndroidManifest.xml b/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..c208884 --- /dev/null +++ b/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/example/android/build.gradle b/example/android/build.gradle index ae21629..3100ad2 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,11 +1,13 @@ buildscript { + ext.kotlin_version = '1.3.50' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' + classpath 'com.android.tools.build:gradle:3.5.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 8bd86f6..38c8d45 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -1 +1,4 @@ org.gradle.jvmargs=-Xmx1536M +android.enableR8=true +android.useAndroidX=true +android.enableJetifier=true diff --git a/example/android/gradle/wrapper/gradle-wrapper.jar b/example/android/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 13372aef5e24af05341d49695ee84e5f9b594659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53636 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ⅅ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 H-+%o-(+5aQ diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index 9372d0f..296b146 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip diff --git a/example/android/gradlew b/example/android/gradlew deleted file mode 100755 index 9d82f78..0000000 --- a/example/android/gradlew +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/example/android/gradlew.bat b/example/android/gradlew.bat deleted file mode 100644 index 8a0b282..0000000 --- a/example/android/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/example/country_code_picker _example.iml b/example/country_code_picker _example.iml deleted file mode 100644 index e5c8371..0000000 --- a/example/country_code_picker _example.iml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/example/country_code_picker _example_android.iml b/example/country_code_picker _example_android.iml deleted file mode 100644 index b050030..0000000 --- a/example/country_code_picker _example_android.iml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/example/ios/.gitignore b/example/ios/.gitignore index 79cc4da..e96ef60 100644 --- a/example/ios/.gitignore +++ b/example/ios/.gitignore @@ -1,45 +1,32 @@ -.idea/ -.vagrant/ -.sconsign.dblite -.svn/ - -.DS_Store -*.swp -profile - -DerivedData/ -build/ -GeneratedPluginRegistrant.h -GeneratedPluginRegistrant.m - -.generated/ - -*.pbxuser *.mode1v3 *.mode2v3 +*.moved-aside +*.pbxuser *.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* -!default.pbxuser +# Exceptions to above rules. !default.mode1v3 !default.mode2v3 +!default.pbxuser !default.perspectivev3 - -xcuserdata - -*.moved-aside - -*.pyc -*sync/ -Icon? -.tags* - -/Flutter/app.flx -/Flutter/app.zip -/Flutter/flutter_assets/ -/Flutter/App.framework -/Flutter/Flutter.framework -/Flutter/Generated.xcconfig -/ServiceDefinitions.json - -Pods/ -.symlinks/ diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist index 9367d48..6b4c0f7 100644 --- a/example/ios/Flutter/AppFrameworkInfo.plist +++ b/example/ios/Flutter/AppFrameworkInfo.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - en + $(DEVELOPMENT_LANGUAGE) CFBundleExecutable App CFBundleIdentifier diff --git a/example/ios/Flutter/flutter_export_environment.sh b/example/ios/Flutter/flutter_export_environment.sh deleted file mode 100644 index a44c1dc..0000000 --- a/example/ios/Flutter/flutter_export_environment.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -# This is a generated file; do not edit or check into version control. -export "FLUTTER_ROOT=D:\Programmi\flutter" -export "FLUTTER_APPLICATION_PATH=C:\Users\Salvatore Giordano\development\CountryCodePicker\example" -export "FLUTTER_TARGET=lib\main.dart" -export "FLUTTER_BUILD_DIR=build" -export "SYMROOT=${SOURCE_ROOT}/../build\ios" -export "FLUTTER_FRAMEWORK_DIR=D:\Programmi\flutter\bin\cache\artifacts\engine\ios" -export "FLUTTER_BUILD_NAME=1.0.0" -export "FLUTTER_BUILD_NUMBER=1" diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 4bffc5c..0d45b98 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -8,15 +8,12 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; - 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; - 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; @@ -40,17 +37,15 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; @@ -73,7 +68,6 @@ 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( - 2D5378251FAA1A9400D5DBA9 /* flutter_assets */, 3B80C3931E831B6300D905FE /* App.framework */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 9740EEBA1CF902C7004384FC /* Flutter.framework */, @@ -90,7 +84,6 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, - CF3B75C9A7D2FA2A4C99F110 /* Frameworks */, ); sourceTree = ""; }; @@ -105,8 +98,6 @@ 97C146F01CF9000F007C117D /* Runner */ = { isa = PBXGroup; children = ( - 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, - 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, 97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, @@ -114,6 +105,8 @@ 97C146F11CF9000F007C117D /* Supporting Files */, 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, ); path = Runner; sourceTree = ""; @@ -121,7 +114,6 @@ 97C146F11CF9000F007C117D /* Supporting Files */ = { isa = PBXGroup; children = ( - 97C146F21CF9000F007C117D /* main.m */, ); name = "Supporting Files"; sourceTree = ""; @@ -155,17 +147,18 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0910; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = "The Chromium Authors"; TargetAttributes = { 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; }; }; }; buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, @@ -188,9 +181,7 @@ files = ( 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -233,8 +224,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */, - 97C146F31CF9000F007C117D /* main.m in Sources */, + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -261,6 +251,83 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.example; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; 97C147031CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; @@ -275,12 +342,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -329,12 +398,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -358,6 +429,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -368,6 +441,7 @@ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -380,8 +454,11 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.helloExample; + PRODUCT_BUNDLE_IDENTIFIER = com.example.example; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -391,6 +468,7 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -403,8 +481,10 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.helloExample; + PRODUCT_BUNDLE_IDENTIFIER = com.example.example; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; @@ -417,6 +497,7 @@ buildConfigurations = ( 97C147031CF9000F007C117D /* Debug */, 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -426,6 +507,7 @@ buildConfigurations = ( 97C147061CF9000F007C117D /* Debug */, 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 1263ac8..a28140c 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ @@ -46,7 +45,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" @@ -67,7 +65,7 @@ -#import - -@interface AppDelegate : FlutterAppDelegate - -@end diff --git a/example/ios/Runner/AppDelegate.m b/example/ios/Runner/AppDelegate.m deleted file mode 100644 index 59a72e9..0000000 --- a/example/ios/Runner/AppDelegate.m +++ /dev/null @@ -1,13 +0,0 @@ -#include "AppDelegate.h" -#include "GeneratedPluginRegistrant.h" - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application - didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - [GeneratedPluginRegistrant registerWithRegistry:self]; - // Override point for customization after application launch. - return [super application:application didFinishLaunchingWithOptions:launchOptions]; -} - -@end diff --git a/example/ios/Runner/AppDelegate.swift b/example/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..70693e4 --- /dev/null +++ b/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png index 3d43d11e66f4de3da27ed045ca4fe38ad8b48094..dc9ada4725e9b0ddb1deab583e5b5102493aa332 100644 GIT binary patch literal 10932 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 P-1+_A+?hGkL;m(J7kc&K diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist index 918d041..a060db6 100644 --- a/example/ios/Runner/Info.plist +++ b/example/ios/Runner/Info.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - en + $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -11,7 +11,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - hello_example + example CFBundlePackageType APPL CFBundleShortVersionString diff --git a/example/ios/Runner/Runner-Bridging-Header.h b/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..7335fdf --- /dev/null +++ b/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" \ No newline at end of file diff --git a/example/ios/Runner/main.m b/example/ios/Runner/main.m deleted file mode 100644 index dff6597..0000000 --- a/example/ios/Runner/main.m +++ /dev/null @@ -1,9 +0,0 @@ -#import -#import -#import "AppDelegate.h" - -int main(int argc, char* argv[]) { - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/example/lib/main.dart b/example/lib/main.dart index 12db222..d45fb37 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,7 +1,9 @@ -import 'package:flutter/material.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(new MyApp()); +void main() => runApp(MyApp()); class MyApp extends StatefulWidget { @override @@ -17,54 +19,67 @@ class _MyAppState extends State { @override Widget build(BuildContext context) { return new MaterialApp( - home: new Scaffold( - appBar: new AppBar( - title: const Text('CountryPicker Example'), - ), - body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - CountryCodePicker( - onChanged: print, - // Initial selection and favorite can be one of code ('IT') OR dial_code('+39') - initialSelection: 'IT', - favorite: ['+39', 'FR'], - //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']), - ), - ), - ], + 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: [ + CountryCodePicker( + onChanged: print, + // Initial selection and favorite can be one of code ('IT') OR dial_code('+39') + initialSelection: 'IT', + favorite: ['+39', 'FR'], + //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'], + ), + ), + ), + ], + ), + ), + ), + ); } } diff --git a/example/pubspec.yaml b/example/pubspec.yaml index b4bcbbe..99d4f1b 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -17,10 +17,8 @@ dependencies: sdk: flutter country_code_picker: path: ../ - - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^0.1.2 + flutter_localizations: + sdk: flutter dev_dependencies: flutter_test: diff --git a/lib/country_code.dart b/lib/country_code.dart index c289ff2..63997b3 100644 --- a/lib/country_code.dart +++ b/lib/country_code.dart @@ -1,3 +1,7 @@ +import 'package:country_code_picker/country_codes.dart'; +import 'package:country_code_picker/country_localizations.dart'; +import 'package:flutter/cupertino.dart'; + mixin ToAlias {} @deprecated @@ -9,20 +13,53 @@ class CountryCode { String name; /// the flag of the country - String flagUri; + final String flagUri; /// the country code (IT,AF..) - String code; + final String code; /// the dial code (+39,+93..) - String dialCode; + final String dialCode; - CountryCode({this.name, this.flagUri, this.code, this.dialCode}); + CountryCode({ + this.name, + this.flagUri, + this.code, + this.dialCode, + }); + + factory CountryCode.fromCode(String isoCode) { + final Map jsonCode = codes.firstWhere( + (code) => code['code'] == isoCode, + orElse: () => null, + ); + + if (jsonCode == null) { + return null; + } + + return CountryCode.fromJson(jsonCode); + } + + factory CountryCode.fromJson(Map json) { + return CountryCode( + name: json['name'], + code: json['code'], + dialCode: json['dial_code'], + flagUri: 'flags/${json['code'].toLowerCase()}.png', + ); + } @override String toString() => "$dialCode"; - String toLongString() => "$dialCode $name"; + String toLongString([BuildContext context]) => + "$dialCode ${toCountryStringOnly(context)}"; - String toCountryStringOnly() => '$name'; + String toCountryStringOnly([BuildContext context]) { + if (context != null) { + return CountryLocalizations.of(context)?.translate(code) ?? name; + } + return '$name'; + } } diff --git a/lib/country_code_picker.dart b/lib/country_code_picker.dart index 05e23ca..0c40ff0 100644 --- a/lib/country_code_picker.dart +++ b/lib/country_code_picker.dart @@ -9,7 +9,6 @@ export 'country_code.dart'; class CountryCodePicker extends StatefulWidget { final ValueChanged onChanged; - //Exposed new method to get the initial information of the country final ValueChanged onInit; final String initialSelection; final List favorite; @@ -27,8 +26,8 @@ class CountryCodePicker extends StatefulWidget { /// aligns the flag and the Text left /// /// additionally this option also fills the available space of the widget. - /// this is especially usefull in combination with [showOnlyCountryWhenClosed], - /// because longer countrynames are displayed in one line + /// this is especially useful in combination with [showOnlyCountryWhenClosed], + /// because longer country names are displayed in one line final bool alignLeft; /// shows the flag @@ -59,22 +58,14 @@ class CountryCodePicker extends StatefulWidget { State createState() { List jsonList = codes; - List elements = jsonList - .map((s) => CountryCode( - name: s['name'], - code: s['code'], - dialCode: s['dial_code'], - flagUri: 'flags/${s['code'].toLowerCase()}.png', - )) - .toList(); + List elements = + jsonList.map((json) => CountryCode.fromJson(json)).toList(); - if(countryFilter.length > 0) { - elements = elements - .where((c) => countryFilter.contains(c.code)) - .toList(); + if (countryFilter.length > 0) { + elements = elements.where((c) => countryFilter.contains(c.code)).toList(); } - return new _CountryCodePickerState(elements); + return _CountryCodePickerState(elements); } } @@ -121,7 +112,7 @@ class _CountryCodePickerState extends State { fit: widget.alignLeft ? FlexFit.tight : FlexFit.loose, child: Text( widget.showOnlyCountryWhenClosed - ? selectedItem.toCountryStringOnly() + ? selectedItem.toCountryStringOnly(context) : selectedItem.toString(), style: widget.textStyle ?? Theme.of(context).textTheme.button, ), @@ -132,15 +123,16 @@ class _CountryCodePickerState extends State { } return _widget; } - + @override void didUpdateWidget(CountryCodePicker oldWidget) { super.didUpdateWidget(oldWidget); - if(oldWidget.initialSelection != widget.initialSelection) { + if (oldWidget.initialSelection != widget.initialSelection) { if (widget.initialSelection != null) { selectedItem = elements.firstWhere( - (e) => - (e.code.toUpperCase() == widget.initialSelection.toUpperCase()) || + (e) => + (e.code.toUpperCase() == + widget.initialSelection.toUpperCase()) || (e.dialCode == widget.initialSelection.toString()), orElse: () => elements[0]); } else { @@ -177,12 +169,15 @@ class _CountryCodePickerState extends State { void _showSelectionDialog() { showDialog( context: context, - builder: (_) => SelectionDialog(elements, favoriteElements, - showCountryOnly: widget.showCountryOnly, - emptySearchBuilder: widget.emptySearchBuilder, - searchDecoration: widget.searchDecoration, - searchStyle: widget.searchStyle, - showFlag: widget.showFlag), + builder: (_) => SelectionDialog( + elements, + favoriteElements, + showCountryOnly: widget.showCountryOnly, + emptySearchBuilder: widget.emptySearchBuilder, + searchDecoration: widget.searchDecoration, + searchStyle: widget.searchStyle, + showFlag: widget.showFlag, + ), ).then((e) { if (e != null) { setState(() { @@ -200,8 +195,8 @@ class _CountryCodePickerState extends State { } } - void _onInit(CountryCode initialData){ - if(widget.onInit != null){ + void _onInit(CountryCode initialData) { + if (widget.onInit != null) { widget.onInit(initialData); } } diff --git a/lib/country_codes.dart b/lib/country_codes.dart index d2214bd..441f66e 100644 --- a/lib/country_codes.dart +++ b/lib/country_codes.dart @@ -1,265 +1,1237 @@ -List codes = [ - {"name": "افغانستان", "code": "AF", "dial_code": "+93"}, - {"name": "Åland", "code": "AX", "dial_code": "+358"}, - {"name": "Shqipëria", "code": "AL", "dial_code": "+355"}, - {"name": "الجزائر", "code": "DZ", "dial_code": "+213"}, - {"name": "American Samoa", "code": "AS", "dial_code": "+1684"}, - {"name": "Andorra", "code": "AD", "dial_code": "+376"}, - {"name": "Angola", "code": "AO", "dial_code": "+244"}, - {"name": "Anguilla", "code": "AI", "dial_code": "+1264"}, - {"name": "Antarctica", "code": "AQ", "dial_code": "+672"}, - {"name": "Antigua and Barbuda", "code": "AG", "dial_code": "+1268"}, - {"name": "Argentina", "code": "AR", "dial_code": "+54"}, - {"name": "Հայաստան", "code": "AM", "dial_code": "+374"}, - {"name": "Aruba", "code": "AW", "dial_code": "+297"}, - {"name": "Australia", "code": "AU", "dial_code": "+61"}, - {"name": "Österreich", "code": "AT", "dial_code": "+43"}, - {"name": "Azərbaycan", "code": "AZ", "dial_code": "+994"}, - {"name": "Bahamas", "code": "BS", "dial_code": "+1242"}, - {"name": "‏البحرين", "code": "BH", "dial_code": "+973"}, - {"name": "Bangladesh", "code": "BD", "dial_code": "+880"}, - {"name": "Barbados", "code": "BB", "dial_code": "+1246"}, - {"name": "Белару́сь", "code": "BY", "dial_code": "+375"}, - {"name": "België", "code": "BE", "dial_code": "+32"}, - {"name": "Belize", "code": "BZ", "dial_code": "+501"}, - {"name": "Bénin", "code": "BJ", "dial_code": "+229"}, - {"name": "Bermuda", "code": "BM", "dial_code": "+1441"}, - {"name": "ʼbrug-yul", "code": "BT", "dial_code": "+975"}, - {"name": "Bolivia", "code": "BO", "dial_code": "+591"}, - {"name": "Bosna i Hercegovina", "code": "BA", "dial_code": "+387"}, - {"name": "Botswana", "code": "BW", "dial_code": "+267"}, - {"name": "Bouvetøya", "code": "BV", "dial_code": "+47"}, - {"name": "Brasil", "code": "BR", "dial_code": "+55"}, - {"name": "British Indian Ocean Territory", "code": "IO", "dial_code": "+246"}, - {"name": "Negara Brunei Darussalam", "code": "BN", "dial_code": "+673"}, - {"name": "България", "code": "BG", "dial_code": "+359"}, - {"name": "Burkina Faso", "code": "BF", "dial_code": "+226"}, - {"name": "Burundi", "code": "BI", "dial_code": "+257"}, - {"name": "Kâmpŭchéa", "code": "KH", "dial_code": "+855"}, - {"name": "Cameroon", "code": "CM", "dial_code": "+237"}, - {"name": "Canada", "code": "CA", "dial_code": "+1"}, - {"name": "Cabo Verde", "code": "CV", "dial_code": "+238"}, - {"name": "Cayman Islands", "code": "KY", "dial_code": "+ 345"}, - {"name": "Ködörösêse tî Bêafrîka", "code": "CF", "dial_code": "+236"}, - {"name": "Tchad", "code": "TD", "dial_code": "+235"}, - {"name": "Chile", "code": "CL", "dial_code": "+56"}, - {"name": "中国", "code": "CN", "dial_code": "+86"}, - {"name": "Christmas Island", "code": "CX", "dial_code": "+61"}, - {"name": "Cocos (Keeling) Islands", "code": "CC", "dial_code": "+61"}, - {"name": "Colombia", "code": "CO", "dial_code": "+57"}, - {"name": "Komori", "code": "KM", "dial_code": "+269"}, - {"name": "République du Congo", "code": "CG", "dial_code": "+242"}, +List> codes = [ + { + "name": "افغانستان", + "code": "AF", + "dial_code": "+93", + }, + { + "name": "Åland", + "code": "AX", + "dial_code": "+358", + }, + { + "name": "Shqipëria", + "code": "AL", + "dial_code": "+355", + }, + { + "name": "الجزائر", + "code": "DZ", + "dial_code": "+213", + }, + { + "name": "American Samoa", + "code": "AS", + "dial_code": "+1684", + }, + { + "name": "Andorra", + "code": "AD", + "dial_code": "+376", + }, + { + "name": "Angola", + "code": "AO", + "dial_code": "+244", + }, + { + "name": "Anguilla", + "code": "AI", + "dial_code": "+1264", + }, + { + "name": "Antarctica", + "code": "AQ", + "dial_code": "+672", + }, + { + "name": "Antigua and Barbuda", + "code": "AG", + "dial_code": "+1268", + }, + { + "name": "Argentina", + "code": "AR", + "dial_code": "+54", + }, + { + "name": "Հայաստան", + "code": "AM", + "dial_code": "+374", + }, + { + "name": "Aruba", + "code": "AW", + "dial_code": "+297", + }, + { + "name": "Australia", + "code": "AU", + "dial_code": "+61", + }, + { + "name": "Österreich", + "code": "AT", + "dial_code": "+43", + }, + { + "name": "Azərbaycan", + "code": "AZ", + "dial_code": "+994", + }, + { + "name": "Bahamas", + "code": "BS", + "dial_code": "+1242", + }, + { + "name": "‏البحرين", + "code": "BH", + "dial_code": "+973", + }, + { + "name": "Bangladesh", + "code": "BD", + "dial_code": "+880", + }, + { + "name": "Barbados", + "code": "BB", + "dial_code": "+1246", + }, + { + "name": "Белару́сь", + "code": "BY", + "dial_code": "+375", + }, + { + "name": "België", + "code": "BE", + "dial_code": "+32", + }, + { + "name": "Belize", + "code": "BZ", + "dial_code": "+501", + }, + { + "name": "Bénin", + "code": "BJ", + "dial_code": "+229", + }, + { + "name": "Bermuda", + "code": "BM", + "dial_code": "+1441", + }, + { + "name": "ʼbrug-yul", + "code": "BT", + "dial_code": "+975", + }, + { + "name": "Bolivia", + "code": "BO", + "dial_code": "+591", + }, + { + "name": "Bosna i Hercegovina", + "code": "BA", + "dial_code": "+387", + }, + { + "name": "Botswana", + "code": "BW", + "dial_code": "+267", + }, + { + "name": "Bouvetøya", + "code": "BV", + "dial_code": "+47", + }, + { + "name": "Brasil", + "code": "BR", + "dial_code": "+55", + }, + { + "name": "British Indian Ocean Territory", + "code": "IO", + "dial_code": "+246", + }, + { + "name": "Negara Brunei Darussalam", + "code": "BN", + "dial_code": "+673", + }, + { + "name": "България", + "code": "BG", + "dial_code": "+359", + }, + { + "name": "Burkina Faso", + "code": "BF", + "dial_code": "+226", + }, + { + "name": "Burundi", + "code": "BI", + "dial_code": "+257", + }, + { + "name": "Kâmpŭchéa", + "code": "KH", + "dial_code": "+855", + }, + { + "name": "Cameroon", + "code": "CM", + "dial_code": "+237", + }, + { + "name": "Canada", + "code": "CA", + "dial_code": "+1", + }, + { + "name": "Cabo Verde", + "code": "CV", + "dial_code": "+238", + }, + { + "name": "Cayman Islands", + "code": "KY", + "dial_code": "+ 345", + }, + { + "name": "Ködörösêse tî Bêafrîka", + "code": "CF", + "dial_code": "+236", + }, + { + "name": "Tchad", + "code": "TD", + "dial_code": "+235", + }, + { + "name": "Chile", + "code": "CL", + "dial_code": "+56", + }, + { + "name": "中国", + "code": "CN", + "dial_code": "+86", + }, + { + "name": "Christmas Island", + "code": "CX", + "dial_code": "+61", + }, + { + "name": "Cocos (Keeling) Islands", + "code": "CC", + "dial_code": "+61", + }, + { + "name": "Colombia", + "code": "CO", + "dial_code": "+57", + }, + { + "name": "Komori", + "code": "KM", + "dial_code": "+269", + }, + { + "name": "République du Congo", + "code": "CG", + "dial_code": "+242", + }, { "name": "République démocratique du Congo", "code": "CD", - "dial_code": "+243" + "dial_code": "+243", + }, + { + "name": "Cook Islands", + "code": "CK", + "dial_code": "+682", + }, + { + "name": "Costa Rica", + "code": "CR", + "dial_code": "+506", + }, + { + "name": "Côte d'Ivoire", + "code": "CI", + "dial_code": "+225", + }, + { + "name": "Hrvatska", + "code": "HR", + "dial_code": "+385", + }, + { + "name": "Cuba", + "code": "CU", + "dial_code": "+53", + }, + { + "name": "Κύπρος", + "code": "CY", + "dial_code": "+357", + }, + { + "name": "Česká republika", + "code": "CZ", + "dial_code": "+420", + }, + { + "name": "Danmark", + "code": "DK", + "dial_code": "+45", + }, + { + "name": "Djibouti", + "code": "DJ", + "dial_code": "+253", + }, + { + "name": "Dominica", + "code": "DM", + "dial_code": "+1767", + }, + { + "name": "República Dominicana", + "code": "DO", + "dial_code": "+1", + }, + { + "name": "Ecuador", + "code": "EC", + "dial_code": "+593", + }, + { + "name": "مصر‎", + "code": "EG", + "dial_code": "+20", + }, + { + "name": "El Salvador", + "code": "SV", + "dial_code": "+503", + }, + { + "name": "Guinea Ecuatorial", + "code": "GQ", + "dial_code": "+240", + }, + { + "name": "ኤርትራ", + "code": "ER", + "dial_code": "+291", + }, + { + "name": "Eesti", + "code": "EE", + "dial_code": "+372", + }, + { + "name": "ኢትዮጵያ", + "code": "ET", + "dial_code": "+251", + }, + { + "name": "Falkland Islands", + "code": "FK", + "dial_code": "+500", + }, + { + "name": "Føroyar", + "code": "FO", + "dial_code": "+298", + }, + { + "name": "Fiji", + "code": "FJ", + "dial_code": "+679", + }, + { + "name": "Suomi", + "code": "FI", + "dial_code": "+358", + }, + { + "name": "France", + "code": "FR", + "dial_code": "+33", + }, + { + "name": "Guyane française", + "code": "GF", + "dial_code": "+594", + }, + { + "name": "Polynésie française", + "code": "PF", + "dial_code": "+689", }, - {"name": "Cook Islands", "code": "CK", "dial_code": "+682"}, - {"name": "Costa Rica", "code": "CR", "dial_code": "+506"}, - {"name": "Côte d'Ivoire", "code": "CI", "dial_code": "+225"}, - {"name": "Hrvatska", "code": "HR", "dial_code": "+385"}, - {"name": "Cuba", "code": "CU", "dial_code": "+53"}, - {"name": "Κύπρος", "code": "CY", "dial_code": "+357"}, - {"name": "Česká republika", "code": "CZ", "dial_code": "+420"}, - {"name": "Danmark", "code": "DK", "dial_code": "+45"}, - {"name": "Djibouti", "code": "DJ", "dial_code": "+253"}, - {"name": "Dominica", "code": "DM", "dial_code": "+1767"}, - {"name": "República Dominicana", "code": "DO", "dial_code": "+1"}, - {"name": "Ecuador", "code": "EC", "dial_code": "+593"}, - {"name": "مصر‎", "code": "EG", "dial_code": "+20"}, - {"name": "El Salvador", "code": "SV", "dial_code": "+503"}, - {"name": "Guinea Ecuatorial", "code": "GQ", "dial_code": "+240"}, - {"name": "ኤርትራ", "code": "ER", "dial_code": "+291"}, - {"name": "Eesti", "code": "EE", "dial_code": "+372"}, - {"name": "ኢትዮጵያ", "code": "ET", "dial_code": "+251"}, - {"name": "Falkland Islands", "code": "FK", "dial_code": "+500"}, - {"name": "Føroyar", "code": "FO", "dial_code": "+298"}, - {"name": "Fiji", "code": "FJ", "dial_code": "+679"}, - {"name": "Suomi", "code": "FI", "dial_code": "+358"}, - {"name": "France", "code": "FR", "dial_code": "+33"}, - {"name": "Guyane française", "code": "GF", "dial_code": "+594"}, - {"name": "Polynésie française", "code": "PF", "dial_code": "+689"}, { "name": "Territoire des Terres australes et antarctiques fr", "code": "TF", - "dial_code": "+262" + "dial_code": "+262", + }, + { + "name": "Gabon", + "code": "GA", + "dial_code": "+241", + }, + { + "name": "Gambia", + "code": "GM", + "dial_code": "+220", + }, + { + "name": "საქართველო", + "code": "GE", + "dial_code": "+995", + }, + { + "name": "Deutschland", + "code": "DE", + "dial_code": "+49", + }, + { + "name": "Ghana", + "code": "GH", + "dial_code": "+233", + }, + { + "name": "Gibraltar", + "code": "GI", + "dial_code": "+350", + }, + { + "name": "Ελλάδα", + "code": "GR", + "dial_code": "+30", + }, + { + "name": "Kalaallit Nunaat", + "code": "GL", + "dial_code": "+299", + }, + { + "name": "Grenada", + "code": "GD", + "dial_code": "+1473", + }, + { + "name": "Guadeloupe", + "code": "GP", + "dial_code": "+590", + }, + { + "name": "Guam", + "code": "GU", + "dial_code": "+1671", + }, + { + "name": "Guatemala", + "code": "GT", + "dial_code": "+502", + }, + { + "name": "Guernsey", + "code": "GG", + "dial_code": "+44", + }, + { + "name": "Guinée", + "code": "GN", + "dial_code": "+224", + }, + { + "name": "Guiné-Bissau", + "code": "GW", + "dial_code": "+245", + }, + { + "name": "Guyana", + "code": "GY", + "dial_code": "+592", + }, + { + "name": "Haïti", + "code": "HT", + "dial_code": "+509", }, - {"name": "Gabon", "code": "GA", "dial_code": "+241"}, - {"name": "Gambia", "code": "GM", "dial_code": "+220"}, - {"name": "საქართველო", "code": "GE", "dial_code": "+995"}, - {"name": "Deutschland", "code": "DE", "dial_code": "+49"}, - {"name": "Ghana", "code": "GH", "dial_code": "+233"}, - {"name": "Gibraltar", "code": "GI", "dial_code": "+350"}, - {"name": "Ελλάδα", "code": "GR", "dial_code": "+30"}, - {"name": "Kalaallit Nunaat", "code": "GL", "dial_code": "+299"}, - {"name": "Grenada", "code": "GD", "dial_code": "+1473"}, - {"name": "Guadeloupe", "code": "GP", "dial_code": "+590"}, - {"name": "Guam", "code": "GU", "dial_code": "+1671"}, - {"name": "Guatemala", "code": "GT", "dial_code": "+502"}, - {"name": "Guernsey", "code": "GG", "dial_code": "+44"}, - {"name": "Guinée", "code": "GN", "dial_code": "+224"}, - {"name": "Guiné-Bissau", "code": "GW", "dial_code": "+245"}, - {"name": "Guyana", "code": "GY", "dial_code": "+592"}, - {"name": "Haïti", "code": "HT", "dial_code": "+509"}, { "name": "Heard Island and McDonald Islands", "code": "HM", - "dial_code": "+0" + "dial_code": "+0", + }, + { + "name": "Vaticano", + "code": "VA", + "dial_code": "+379", + }, + { + "name": "Honduras", + "code": "HN", + "dial_code": "+504", + }, + { + "name": "香港", + "code": "HK", + "dial_code": "+852", + }, + { + "name": "Magyarország", + "code": "HU", + "dial_code": "+36", + }, + { + "name": "Ísland", + "code": "IS", + "dial_code": "+354", + }, + { + "name": "भारत", + "code": "IN", + "dial_code": "+91", + }, + { + "name": "Indonesia", + "code": "ID", + "dial_code": "+62", + }, + { + "name": "ایران", + "code": "IR", + "dial_code": "+98", + }, + { + "name": "العراق", + "code": "IQ", + "dial_code": "+964", + }, + { + "name": "Éire", + "code": "IE", + "dial_code": "+353", + }, + { + "name": "Isle of Man", + "code": "IM", + "dial_code": "+44", + }, + { + "name": "יִשְׂרָאֵל", + "code": "IL", + "dial_code": "+972", + }, + { + "name": "Italia", + "code": "IT", + "dial_code": "+39", + }, + { + "name": "Jamaica", + "code": "JM", + "dial_code": "+1876", + }, + { + "name": "日本", + "code": "JP", + "dial_code": "+81", + }, + { + "name": "Jersey", + "code": "JE", + "dial_code": "+44", + }, + { + "name": "الأردن", + "code": "JO", + "dial_code": "+962", + }, + { + "name": "Қазақстан", + "code": "KZ", + "dial_code": "+7", + }, + { + "name": "Kenya", + "code": "KE", + "dial_code": "+254", + }, + { + "name": "Kiribati", + "code": "KI", + "dial_code": "+686", + }, + { + "name": "북한", + "code": "KP", + "dial_code": "+850", + }, + { + "name": "대한민국", + "code": "KR", + "dial_code": "+82", + }, + { + "name": "Republika e Kosovës", + "code": "XK", + "dial_code": "+383", + }, + { + "name": "الكويت", + "code": "KW", + "dial_code": "+965", + }, + { + "name": "Кыргызстан", + "code": "KG", + "dial_code": "+996", + }, + { + "name": "ສປປລາວ", + "code": "LA", + "dial_code": "+856", + }, + { + "name": "Latvija", + "code": "LV", + "dial_code": "+371", + }, + { + "name": "لبنان", + "code": "LB", + "dial_code": "+961", + }, + { + "name": "Lesotho", + "code": "LS", + "dial_code": "+266", + }, + { + "name": "Liberia", + "code": "LR", + "dial_code": "+231", + }, + { + "name": "‏ليبيا", + "code": "LY", + "dial_code": "+218", + }, + { + "name": "Liechtenstein", + "code": "LI", + "dial_code": "+423", + }, + { + "name": "Lietuva", + "code": "LT", + "dial_code": "+370", + }, + { + "name": "Luxembourg", + "code": "LU", + "dial_code": "+352", + }, + { + "name": "澳門", + "code": "MO", + "dial_code": "+853", + }, + { + "name": "Македонија", + "code": "MK", + "dial_code": "+389", + }, + { + "name": "Madagasikara", + "code": "MG", + "dial_code": "+261", + }, + { + "name": "Malawi", + "code": "MW", + "dial_code": "+265", + }, + { + "name": "Malaysia", + "code": "MY", + "dial_code": "+60", + }, + { + "name": "Maldives", + "code": "MV", + "dial_code": "+960", + }, + { + "name": "Mali", + "code": "ML", + "dial_code": "+223", + }, + { + "name": "Malta", + "code": "MT", + "dial_code": "+356", + }, + { + "name": "M̧ajeļ", + "code": "MH", + "dial_code": "+692", + }, + { + "name": "Martinique", + "code": "MQ", + "dial_code": "+596", + }, + { + "name": "موريتانيا", + "code": "MR", + "dial_code": "+222", + }, + { + "name": "Maurice", + "code": "MU", + "dial_code": "+230", + }, + { + "name": "Mayotte", + "code": "YT", + "dial_code": "+262", + }, + { + "name": "México", + "code": "MX", + "dial_code": "+52", + }, + { + "name": "Micronesia", + "code": "FM", + "dial_code": "+691", + }, + { + "name": "Moldova", + "code": "MD", + "dial_code": "+373", + }, + { + "name": "Monaco", + "code": "MC", + "dial_code": "+377", + }, + { + "name": "Монгол улс", + "code": "MN", + "dial_code": "+976", + }, + { + "name": "Црна Гора", + "code": "ME", + "dial_code": "+382", + }, + { + "name": "Montserrat", + "code": "MS", + "dial_code": "+1664", + }, + { + "name": "المغرب", + "code": "MA", + "dial_code": "+212", + }, + { + "name": "Moçambique", + "code": "MZ", + "dial_code": "+258", + }, + { + "name": "Myanma", + "code": "MM", + "dial_code": "+95", + }, + { + "name": "Namibia", + "code": "NA", + "dial_code": "+264", + }, + { + "name": "Nauru", + "code": "NR", + "dial_code": "+674", + }, + { + "name": "नपल", + "code": "NP", + "dial_code": "+977", + }, + { + "name": "Nederland", + "code": "NL", + "dial_code": "+31", + }, + { + "name": "Netherlands Antilles", + "code": "AN", + "dial_code": "+599", + }, + { + "name": "Nouvelle-Calédonie", + "code": "NC", + "dial_code": "+687", + }, + { + "name": "New Zealand", + "code": "NZ", + "dial_code": "+64", + }, + { + "name": "Nicaragua", + "code": "NI", + "dial_code": "+505", + }, + { + "name": "Niger", + "code": "NE", + "dial_code": "+227", + }, + { + "name": "Nigeria", + "code": "NG", + "dial_code": "+234", + }, + { + "name": "Niuē", + "code": "NU", + "dial_code": "+683", + }, + { + "name": "Norfolk Island", + "code": "NF", + "dial_code": "+672", + }, + { + "name": "Northern Mariana Islands", + "code": "MP", + "dial_code": "+1670", + }, + { + "name": "Norge", + "code": "NO", + "dial_code": "+47", + }, + { + "name": "عمان", + "code": "OM", + "dial_code": "+968", + }, + { + "name": "Pakistan", + "code": "PK", + "dial_code": "+92", + }, + { + "name": "Palau", + "code": "PW", + "dial_code": "+680", + }, + { + "name": "فلسطين", + "code": "PS", + "dial_code": "+970", + }, + { + "name": "Panamá", + "code": "PA", + "dial_code": "+507", + }, + { + "name": "Papua Niugini", + "code": "PG", + "dial_code": "+675", + }, + { + "name": "Paraguay", + "code": "PY", + "dial_code": "+595", + }, + { + "name": "Perú", + "code": "PE", + "dial_code": "+51", + }, + { + "name": "Pilipinas", + "code": "PH", + "dial_code": "+63", + }, + { + "name": "Pitcairn Islands", + "code": "PN", + "dial_code": "+64", + }, + { + "name": "Polska", + "code": "PL", + "dial_code": "+48", + }, + { + "name": "Portugal", + "code": "PT", + "dial_code": "+351", + }, + { + "name": "Puerto Rico", + "code": "PR", + "dial_code": "+1939", + }, + { + "name": "Puerto Rico", + "code": "PR", + "dial_code": "+1787", + }, + { + "name": "قطر", + "code": "QA", + "dial_code": "+974", + }, + { + "name": "România", + "code": "RO", + "dial_code": "+40", + }, + { + "name": "Россия", + "code": "RU", + "dial_code": "+7", + }, + { + "name": "Rwanda", + "code": "RW", + "dial_code": "+250", + }, + { + "name": "La Réunion", + "code": "RE", + "dial_code": "+262", + }, + { + "name": "Saint-Barthélemy", + "code": "BL", + "dial_code": "+590", + }, + { + "name": "Saint Helena", + "code": "SH", + "dial_code": "+290", + }, + { + "name": "Saint Kitts and Nevis", + "code": "KN", + "dial_code": "+1869", + }, + { + "name": "Saint Lucia", + "code": "LC", + "dial_code": "+1758", + }, + { + "name": "Saint-Martin", + "code": "MF", + "dial_code": "+590", + }, + { + "name": "Saint-Pierre-et-Miquelon", + "code": "PM", + "dial_code": "+508", }, - {"name": "Vaticano", "code": "VA", "dial_code": "+379"}, - {"name": "Honduras", "code": "HN", "dial_code": "+504"}, - {"name": "香港", "code": "HK", "dial_code": "+852"}, - {"name": "Magyarország", "code": "HU", "dial_code": "+36"}, - {"name": "Ísland", "code": "IS", "dial_code": "+354"}, - {"name": "भारत", "code": "IN", "dial_code": "+91"}, - {"name": "Indonesia", "code": "ID", "dial_code": "+62"}, - {"name": "ایران", "code": "IR", "dial_code": "+98"}, - {"name": "العراق", "code": "IQ", "dial_code": "+964"}, - {"name": "Éire", "code": "IE", "dial_code": "+353"}, - {"name": "Isle of Man", "code": "IM", "dial_code": "+44"}, - {"name": "יִשְׂרָאֵל", "code": "IL", "dial_code": "+972"}, - {"name": "Italia", "code": "IT", "dial_code": "+39"}, - {"name": "Jamaica", "code": "JM", "dial_code": "+1876"}, - {"name": "日本", "code": "JP", "dial_code": "+81"}, - {"name": "Jersey", "code": "JE", "dial_code": "+44"}, - {"name": "الأردن", "code": "JO", "dial_code": "+962"}, - {"name": "Қазақстан", "code": "KZ", "dial_code": "+7"}, - {"name": "Kenya", "code": "KE", "dial_code": "+254"}, - {"name": "Kiribati", "code": "KI", "dial_code": "+686"}, - {"name": "북한", "code": "KP", "dial_code": "+850"}, - {"name": "대한민국", "code": "KR", "dial_code": "+82"}, - {"name": "Republika e Kosovës", "code": "XK", "dial_code": "+383"}, - {"name": "الكويت", "code": "KW", "dial_code": "+965"}, - {"name": "Кыргызстан", "code": "KG", "dial_code": "+996"}, - {"name": "ສປປລາວ", "code": "LA", "dial_code": "+856"}, - {"name": "Latvija", "code": "LV", "dial_code": "+371"}, - {"name": "لبنان", "code": "LB", "dial_code": "+961"}, - {"name": "Lesotho", "code": "LS", "dial_code": "+266"}, - {"name": "Liberia", "code": "LR", "dial_code": "+231"}, - {"name": "‏ليبيا", "code": "LY", "dial_code": "+218"}, - {"name": "Liechtenstein", "code": "LI", "dial_code": "+423"}, - {"name": "Lietuva", "code": "LT", "dial_code": "+370"}, - {"name": "Luxembourg", "code": "LU", "dial_code": "+352"}, - {"name": "澳門", "code": "MO", "dial_code": "+853"}, - {"name": "Македонија", "code": "MK", "dial_code": "+389"}, - {"name": "Madagasikara", "code": "MG", "dial_code": "+261"}, - {"name": "Malawi", "code": "MW", "dial_code": "+265"}, - {"name": "Malaysia", "code": "MY", "dial_code": "+60"}, - {"name": "Maldives", "code": "MV", "dial_code": "+960"}, - {"name": "Mali", "code": "ML", "dial_code": "+223"}, - {"name": "Malta", "code": "MT", "dial_code": "+356"}, - {"name": "M̧ajeļ", "code": "MH", "dial_code": "+692"}, - {"name": "Martinique", "code": "MQ", "dial_code": "+596"}, - {"name": "موريتانيا", "code": "MR", "dial_code": "+222"}, - {"name": "Maurice", "code": "MU", "dial_code": "+230"}, - {"name": "Mayotte", "code": "YT", "dial_code": "+262"}, - {"name": "México", "code": "MX", "dial_code": "+52"}, - {"name": "Micronesia", "code": "FM", "dial_code": "+691"}, - {"name": "Moldova", "code": "MD", "dial_code": "+373"}, - {"name": "Monaco", "code": "MC", "dial_code": "+377"}, - {"name": "Монгол улс", "code": "MN", "dial_code": "+976"}, - {"name": "Црна Гора", "code": "ME", "dial_code": "+382"}, - {"name": "Montserrat", "code": "MS", "dial_code": "+1664"}, - {"name": "المغرب", "code": "MA", "dial_code": "+212"}, - {"name": "Moçambique", "code": "MZ", "dial_code": "+258"}, - {"name": "Myanma", "code": "MM", "dial_code": "+95"}, - {"name": "Namibia", "code": "NA", "dial_code": "+264"}, - {"name": "Nauru", "code": "NR", "dial_code": "+674"}, - {"name": "नपल", "code": "NP", "dial_code": "+977"}, - {"name": "Nederland", "code": "NL", "dial_code": "+31"}, - {"name": "Netherlands Antilles", "code": "AN", "dial_code": "+599"}, - {"name": "Nouvelle-Calédonie", "code": "NC", "dial_code": "+687"}, - {"name": "New Zealand", "code": "NZ", "dial_code": "+64"}, - {"name": "Nicaragua", "code": "NI", "dial_code": "+505"}, - {"name": "Niger", "code": "NE", "dial_code": "+227"}, - {"name": "Nigeria", "code": "NG", "dial_code": "+234"}, - {"name": "Niuē", "code": "NU", "dial_code": "+683"}, - {"name": "Norfolk Island", "code": "NF", "dial_code": "+672"}, - {"name": "Northern Mariana Islands", "code": "MP", "dial_code": "+1670"}, - {"name": "Norge", "code": "NO", "dial_code": "+47"}, - {"name": "عمان", "code": "OM", "dial_code": "+968"}, - {"name": "Pakistan", "code": "PK", "dial_code": "+92"}, - {"name": "Palau", "code": "PW", "dial_code": "+680"}, - {"name": "فلسطين", "code": "PS", "dial_code": "+970"}, - {"name": "Panamá", "code": "PA", "dial_code": "+507"}, - {"name": "Papua Niugini", "code": "PG", "dial_code": "+675"}, - {"name": "Paraguay", "code": "PY", "dial_code": "+595"}, - {"name": "Perú", "code": "PE", "dial_code": "+51"}, - {"name": "Pilipinas", "code": "PH", "dial_code": "+63"}, - {"name": "Pitcairn Islands", "code": "PN", "dial_code": "+64"}, - {"name": "Polska", "code": "PL", "dial_code": "+48"}, - {"name": "Portugal", "code": "PT", "dial_code": "+351"}, - {"name": "Puerto Rico", "code": "PR", "dial_code": "+1939"}, - {"name": "Puerto Rico", "code": "PR", "dial_code": "+1787"}, - {"name": "قطر", "code": "QA", "dial_code": "+974"}, - {"name": "România", "code": "RO", "dial_code": "+40"}, - {"name": "Россия", "code": "RU", "dial_code": "+7"}, - {"name": "Rwanda", "code": "RW", "dial_code": "+250"}, - {"name": "La Réunion", "code": "RE", "dial_code": "+262"}, - {"name": "Saint-Barthélemy", "code": "BL", "dial_code": "+590"}, - {"name": "Saint Helena", "code": "SH", "dial_code": "+290"}, - {"name": "Saint Kitts and Nevis", "code": "KN", "dial_code": "+1869"}, - {"name": "Saint Lucia", "code": "LC", "dial_code": "+1758"}, - {"name": "Saint-Martin", "code": "MF", "dial_code": "+590"}, - {"name": "Saint-Pierre-et-Miquelon", "code": "PM", "dial_code": "+508"}, { "name": "Saint Vincent and the Grenadines", "code": "VC", - "dial_code": "+1784" + "dial_code": "+1784", + }, + { + "name": "Samoa", + "code": "WS", + "dial_code": "+685", + }, + { + "name": "San Marino", + "code": "SM", + "dial_code": "+378", + }, + { + "name": "São Tomé e Príncipe", + "code": "ST", + "dial_code": "+239", + }, + { + "name": "العربية السعودية", + "code": "SA", + "dial_code": "+966", + }, + { + "name": "Sénégal", + "code": "SN", + "dial_code": "+221", + }, + { + "name": "Србија", + "code": "RS", + "dial_code": "+381", + }, + { + "name": "Seychelles", + "code": "SC", + "dial_code": "+248", + }, + { + "name": "Sierra Leone", + "code": "SL", + "dial_code": "+232", + }, + { + "name": "Singapore", + "code": "SG", + "dial_code": "+65", + }, + { + "name": "Slovensko", + "code": "SK", + "dial_code": "+421", + }, + { + "name": "Slovenija", + "code": "SI", + "dial_code": "+386", + }, + { + "name": "Solomon Islands", + "code": "SB", + "dial_code": "+677", + }, + { + "name": "Soomaaliya", + "code": "SO", + "dial_code": "+252", + }, + { + "name": "South Africa", + "code": "ZA", + "dial_code": "+27", + }, + { + "name": "South Sudan", + "code": "SS", + "dial_code": "+211", + }, + { + "name": "South Georgia", + "code": "GS", + "dial_code": "+500", + }, + { + "name": "España", + "code": "ES", + "dial_code": "+34", + }, + { + "name": "Sri Lanka", + "code": "LK", + "dial_code": "+94", + }, + { + "name": "السودان", + "code": "SD", + "dial_code": "+249", + }, + { + "name": "Suriname", + "code": "SR", + "dial_code": "+597", + }, + { + "name": "Svalbard og Jan Mayen", + "code": "SJ", + "dial_code": "+47", + }, + { + "name": "Swaziland", + "code": "SZ", + "dial_code": "+268", + }, + { + "name": "Sverige", + "code": "SE", + "dial_code": "+46", + }, + { + "name": "Schweiz", + "code": "CH", + "dial_code": "+41", + }, + { + "name": "سوريا", + "code": "SY", + "dial_code": "+963", + }, + { + "name": "臺灣", + "code": "TW", + "dial_code": "+886", + }, + { + "name": "Тоҷикистон", + "code": "TJ", + "dial_code": "+992", + }, + { + "name": "Tanzania", + "code": "TZ", + "dial_code": "+255", + }, + { + "name": "ประเทศไทย", + "code": "TH", + "dial_code": "+66", + }, + { + "name": "Timor-Leste", + "code": "TL", + "dial_code": "+670", + }, + { + "name": "Togo", + "code": "TG", + "dial_code": "+228", + }, + { + "name": "Tokelau", + "code": "TK", + "dial_code": "+690", + }, + { + "name": "Tonga", + "code": "TO", + "dial_code": "+676", + }, + { + "name": "Trinidad and Tobago", + "code": "TT", + "dial_code": "+1868", + }, + { + "name": "تونس", + "code": "TN", + "dial_code": "+216", + }, + { + "name": "Türkiye", + "code": "TR", + "dial_code": "+90", + }, + { + "name": "Türkmenistan", + "code": "TM", + "dial_code": "+993", + }, + { + "name": "Turks and Caicos Islands", + "code": "TC", + "dial_code": "+1649", + }, + { + "name": "Tuvalu", + "code": "TV", + "dial_code": "+688", + }, + { + "name": "Uganda", + "code": "UG", + "dial_code": "+256", + }, + { + "name": "Україна", + "code": "UA", + "dial_code": "+380", + }, + { + "name": "دولة الإمارات العربية المتحدة", + "code": "AE", + "dial_code": "+971", + }, + { + "name": "United Kingdom", + "code": "GB", + "dial_code": "+44", + }, + { + "name": "United States", + "code": "US", + "dial_code": "+1", + }, + { + "name": "Uruguay", + "code": "UY", + "dial_code": "+598", + }, + { + "name": "O‘zbekiston", + "code": "UZ", + "dial_code": "+998", + }, + { + "name": "Vanuatu", + "code": "VU", + "dial_code": "+678", + }, + { + "name": "Venezuela", + "code": "VE", + "dial_code": "+58", + }, + { + "name": "Việt Nam", + "code": "VN", + "dial_code": "+84", + }, + { + "name": "British Virgin Islands", + "code": "VG", + "dial_code": "+1284", + }, + { + "name": "United States Virgin Islands", + "code": "VI", + "dial_code": "+1340", + }, + { + "name": "Wallis et Futuna", + "code": "WF", + "dial_code": "+681", + }, + { + "name": "اليَمَن", + "code": "YE", + "dial_code": "+967", + }, + { + "name": "Zambia", + "code": "ZM", + "dial_code": "+260", + }, + { + "name": "Zimbabwe", + "code": "ZW", + "dial_code": "+263", }, - {"name": "Samoa", "code": "WS", "dial_code": "+685"}, - {"name": "San Marino", "code": "SM", "dial_code": "+378"}, - {"name": "São Tomé e Príncipe", "code": "ST", "dial_code": "+239"}, - {"name": "العربية السعودية", "code": "SA", "dial_code": "+966"}, - {"name": "Sénégal", "code": "SN", "dial_code": "+221"}, - {"name": "Србија", "code": "RS", "dial_code": "+381"}, - {"name": "Seychelles", "code": "SC", "dial_code": "+248"}, - {"name": "Sierra Leone", "code": "SL", "dial_code": "+232"}, - {"name": "Singapore", "code": "SG", "dial_code": "+65"}, - {"name": "Slovensko", "code": "SK", "dial_code": "+421"}, - {"name": "Slovenija", "code": "SI", "dial_code": "+386"}, - {"name": "Solomon Islands", "code": "SB", "dial_code": "+677"}, - {"name": "Soomaaliya", "code": "SO", "dial_code": "+252"}, - {"name": "South Africa", "code": "ZA", "dial_code": "+27"}, - {"name": "South Sudan", "code": "SS", "dial_code": "+211"}, - {"name": "South Georgia", "code": "GS", "dial_code": "+500"}, - {"name": "España", "code": "ES", "dial_code": "+34"}, - {"name": "śrī laṃkāva", "code": "LK", "dial_code": "+94"}, - {"name": "السودان", "code": "SD", "dial_code": "+249"}, - {"name": "Suriname", "code": "SR", "dial_code": "+597"}, - {"name": "Svalbard og Jan Mayen", "code": "SJ", "dial_code": "+47"}, - {"name": "Swaziland", "code": "SZ", "dial_code": "+268"}, - {"name": "Sverige", "code": "SE", "dial_code": "+46"}, - {"name": "Schweiz", "code": "CH", "dial_code": "+41"}, - {"name": "سوريا", "code": "SY", "dial_code": "+963"}, - {"name": "臺灣", "code": "TW", "dial_code": "+886"}, - {"name": "Тоҷикистон", "code": "TJ", "dial_code": "+992"}, - {"name": "Tanzania", "code": "TZ", "dial_code": "+255"}, - {"name": "ประเทศไทย", "code": "TH", "dial_code": "+66"}, - {"name": "Timor-Leste", "code": "TL", "dial_code": "+670"}, - {"name": "Togo", "code": "TG", "dial_code": "+228"}, - {"name": "Tokelau", "code": "TK", "dial_code": "+690"}, - {"name": "Tonga", "code": "TO", "dial_code": "+676"}, - {"name": "Trinidad and Tobago", "code": "TT", "dial_code": "+1868"}, - {"name": "تونس", "code": "TN", "dial_code": "+216"}, - {"name": "Türkiye", "code": "TR", "dial_code": "+90"}, - {"name": "Türkmenistan", "code": "TM", "dial_code": "+993"}, - {"name": "Turks and Caicos Islands", "code": "TC", "dial_code": "+1649"}, - {"name": "Tuvalu", "code": "TV", "dial_code": "+688"}, - {"name": "Uganda", "code": "UG", "dial_code": "+256"}, - {"name": "Україна", "code": "UA", "dial_code": "+380"}, - {"name": "دولة الإمارات العربية المتحدة", "code": "AE", "dial_code": "+971"}, - {"name": "United Kingdom", "code": "GB", "dial_code": "+44"}, - {"name": "United States", "code": "US", "dial_code": "+1"}, - {"name": "Uruguay", "code": "UY", "dial_code": "+598"}, - {"name": "O‘zbekiston", "code": "UZ", "dial_code": "+998"}, - {"name": "Vanuatu", "code": "VU", "dial_code": "+678"}, - {"name": "Venezuela", "code": "VE", "dial_code": "+58"}, - {"name": "Việt Nam", "code": "VN", "dial_code": "+84"}, - {"name": "British Virgin Islands", "code": "VG", "dial_code": "+1284"}, - {"name": "United States Virgin Islands", "code": "VI", "dial_code": "+1340"}, - {"name": "Wallis et Futuna", "code": "WF", "dial_code": "+681"}, - {"name": "اليَمَن", "code": "YE", "dial_code": "+967"}, - {"name": "Zambia", "code": "ZM", "dial_code": "+260"}, - {"name": "Zimbabwe", "code": "ZW", "dial_code": "+263"} ]; diff --git a/lib/country_localizations.dart b/lib/country_localizations.dart new file mode 100644 index 0000000..873735d --- /dev/null +++ b/lib/country_localizations.dart @@ -0,0 +1,63 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class CountryLocalizations { + final Locale locale; + + CountryLocalizations(this.locale); + + static CountryLocalizations of(BuildContext context) { + return Localizations.of( + context, + CountryLocalizations, + ); + } + + static const LocalizationsDelegate delegate = + _CountryLocalizationsDelegate(); + + Map _localizedStrings; + + Future load() async { + print('locale.languageCode: ${locale.languageCode}'); + String jsonString = await rootBundle.loadString( + 'packages/country_code_picker/i18n/${locale.languageCode}.json'); + Map jsonMap = json.decode(jsonString); + + _localizedStrings = jsonMap.map((key, value) { + return MapEntry(key, value.toString()); + }); + + return true; + } + + String translate(String key) { + return _localizedStrings[key]; + } +} + +class _CountryLocalizationsDelegate + extends LocalizationsDelegate { + const _CountryLocalizationsDelegate(); + + @override + bool isSupported(Locale locale) { + return [ + 'en', + 'it', + 'fr', + ].contains(locale.languageCode); + } + + @override + Future load(Locale locale) async { + CountryLocalizations localizations = new CountryLocalizations(locale); + await localizations.load(); + return localizations; + } + + @override + bool shouldReload(_CountryLocalizationsDelegate old) => false; +} diff --git a/lib/i18n/en.json b/lib/i18n/en.json new file mode 100644 index 0000000..bb8a009 --- /dev/null +++ b/lib/i18n/en.json @@ -0,0 +1,252 @@ +{ + "BD": "Bangladesh", + "BE": "Belgium", + "BF": "Burkina Faso", + "BG": "Bulgaria", + "BA": "Bosnia and Herzegovina", + "BB": "Barbados", + "WF": "Wallis and Futuna", + "BL": "Saint Barthelemy", + "BM": "Bermuda", + "BN": "Brunei", + "BO": "Bolivia", + "BH": "Bahrain", + "BI": "Burundi", + "BJ": "Benin", + "BT": "Bhutan", + "JM": "Jamaica", + "BV": "Bouvet Island", + "BW": "Botswana", + "WS": "Samoa", + "BQ": "Bonaire, Saint Eustatius and Saba ", + "BR": "Brazil", + "BS": "Bahamas", + "JE": "Jersey", + "BY": "Belarus", + "BZ": "Belize", + "RU": "Russia", + "RW": "Rwanda", + "RS": "Serbia", + "TL": "East Timor", + "RE": "Reunion", + "TM": "Turkmenistan", + "TJ": "Tajikistan", + "RO": "Romania", + "TK": "Tokelau", + "GW": "Guinea-Bissau", + "GU": "Guam", + "GT": "Guatemala", + "GS": "South Georgia and the South Sandwich Islands", + "GR": "Greece", + "GQ": "Equatorial Guinea", + "GP": "Guadeloupe", + "JP": "Japan", + "GY": "Guyana", + "GG": "Guernsey", + "GF": "French Guiana", + "GE": "Georgia", + "GD": "Grenada", + "GB": "United Kingdom", + "GA": "Gabon", + "SV": "El Salvador", + "GN": "Guinea", + "GM": "Gambia", + "GL": "Greenland", + "GI": "Gibraltar", + "GH": "Ghana", + "OM": "Oman", + "TN": "Tunisia", + "JO": "Jordan", + "HR": "Croatia", + "HT": "Haiti", + "HU": "Hungary", + "HK": "Hong Kong", + "HN": "Honduras", + "HM": "Heard Island and McDonald Islands", + "VE": "Venezuela", + "PR": "Puerto Rico", + "PS": "Palestinian Territory", + "PW": "Palau", + "PT": "Portugal", + "SJ": "Svalbard and Jan Mayen", + "PY": "Paraguay", + "IQ": "Iraq", + "PA": "Panama", + "PF": "French Polynesia", + "PG": "Papua New Guinea", + "PE": "Peru", + "PK": "Pakistan", + "PH": "Philippines", + "PN": "Pitcairn", + "PL": "Poland", + "PM": "Saint Pierre and Miquelon", + "ZM": "Zambia", + "EH": "Western Sahara", + "EE": "Estonia", + "EG": "Egypt", + "ZA": "South Africa", + "EC": "Ecuador", + "IT": "Italy", + "VN": "Vietnam", + "SB": "Solomon Islands", + "ET": "Ethiopia", + "SO": "Somalia", + "ZW": "Zimbabwe", + "SA": "Saudi Arabia", + "ES": "Spain", + "ER": "Eritrea", + "ME": "Montenegro", + "MD": "Moldova", + "MG": "Madagascar", + "MF": "Saint Martin", + "MA": "Morocco", + "MC": "Monaco", + "UZ": "Uzbekistan", + "MM": "Myanmar", + "ML": "Mali", + "MO": "Macao", + "MN": "Mongolia", + "MH": "Marshall Islands", + "MK": "Macedonia", + "MU": "Mauritius", + "MT": "Malta", + "MW": "Malawi", + "MV": "Maldives", + "MQ": "Martinique", + "MP": "Northern Mariana Islands", + "MS": "Montserrat", + "MR": "Mauritania", + "IM": "Isle of Man", + "UG": "Uganda", + "TZ": "Tanzania", + "MY": "Malaysia", + "MX": "Mexico", + "IL": "Israel", + "FR": "France", + "IO": "British Indian Ocean Territory", + "SH": "Saint Helena", + "FI": "Finland", + "FJ": "Fiji", + "FK": "Falkland Islands", + "FM": "Micronesia", + "FO": "Faroe Islands", + "NI": "Nicaragua", + "NL": "Netherlands", + "NO": "Norway", + "NA": "Namibia", + "VU": "Vanuatu", + "NC": "New Caledonia", + "NE": "Niger", + "NF": "Norfolk Island", + "NG": "Nigeria", + "NZ": "New Zealand", + "NP": "Nepal", + "NR": "Nauru", + "NU": "Niue", + "CK": "Cook Islands", + "XK": "Kosovo", + "CI": "Ivory Coast", + "CH": "Switzerland", + "CO": "Colombia", + "CN": "China", + "CM": "Cameroon", + "CL": "Chile", + "CC": "Cocos Islands", + "CA": "Canada", + "CG": "Republic of the Congo", + "CF": "Central African Republic", + "CD": "Democratic Republic of the Congo", + "CZ": "Czech Republic", + "CY": "Cyprus", + "CX": "Christmas Island", + "CR": "Costa Rica", + "CW": "Curacao", + "CV": "Cape Verde", + "CU": "Cuba", + "SZ": "Swaziland", + "SY": "Syria", + "SX": "Sint Maarten", + "KG": "Kyrgyzstan", + "KE": "Kenya", + "SS": "South Sudan", + "SR": "Suriname", + "KI": "Kiribati", + "KH": "Cambodia", + "KN": "Saint Kitts and Nevis", + "KM": "Comoros", + "ST": "Sao Tome and Principe", + "SK": "Slovakia", + "KR": "South Korea", + "SI": "Slovenia", + "KP": "North Korea", + "KW": "Kuwait", + "SN": "Senegal", + "SM": "San Marino", + "SL": "Sierra Leone", + "SC": "Seychelles", + "KZ": "Kazakhstan", + "KY": "Cayman Islands", + "SG": "Singapore", + "SE": "Sweden", + "SD": "Sudan", + "DO": "Dominican Republic", + "DM": "Dominica", + "DJ": "Djibouti", + "DK": "Denmark", + "VG": "British Virgin Islands", + "DE": "Germany", + "YE": "Yemen", + "DZ": "Algeria", + "US": "United States", + "UY": "Uruguay", + "YT": "Mayotte", + "UM": "United States Minor Outlying Islands", + "LB": "Lebanon", + "LC": "Saint Lucia", + "LA": "Laos", + "TV": "Tuvalu", + "TW": "Taiwan", + "TT": "Trinidad and Tobago", + "TR": "Turkey", + "LK": "Sri Lanka", + "LI": "Liechtenstein", + "LV": "Latvia", + "TO": "Tonga", + "LT": "Lithuania", + "LU": "Luxembourg", + "LR": "Liberia", + "LS": "Lesotho", + "TH": "Thailand", + "TF": "French Southern Territories", + "TG": "Togo", + "TD": "Chad", + "TC": "Turks and Caicos Islands", + "LY": "Libya", + "VA": "Vatican", + "VC": "Saint Vincent and the Grenadines", + "AE": "United Arab Emirates", + "AD": "Andorra", + "AG": "Antigua and Barbuda", + "AF": "Afghanistan", + "AI": "Anguilla", + "VI": "U.S. Virgin Islands", + "IS": "Iceland", + "IR": "Iran", + "AM": "Armenia", + "AL": "Albania", + "AO": "Angola", + "AQ": "Antarctica", + "AS": "American Samoa", + "AR": "Argentina", + "AU": "Australia", + "AT": "Austria", + "AW": "Aruba", + "IN": "India", + "AX": "Aland Islands", + "AZ": "Azerbaijan", + "IE": "Ireland", + "ID": "Indonesia", + "UA": "Ukraine", + "QA": "Qatar", + "MZ": "Mozambique" +} \ No newline at end of file diff --git a/lib/i18n/fr.json b/lib/i18n/fr.json new file mode 100644 index 0000000..f5c6cf9 --- /dev/null +++ b/lib/i18n/fr.json @@ -0,0 +1,257 @@ +{ + "AF": "Afghanistan", + "ZA": "Afrique du Sud", + "AL": "Albanie", + "DZ": "Algérie", + "DE": "Allemagne", + "AD": "Andorre", + "AO": "Angola", + "AI": "Anguilla", + "AQ": "Antarctique", + "AG": "Antigua-et-Barbuda", + "SA": "Arabie saoudite", + "AR": "Argentine", + "AM": "Arménie", + "AW": "Aruba", + "AU": "Australie", + "AT": "Autriche", + "AZ": "Azerbaïdjan", + "BS": "Bahamas", + "BH": "Bahreïn", + "BD": "Bangladesh", + "BB": "Barbade", + "BE": "Belgique", + "BZ": "Belize", + "BJ": "Bénin", + "BM": "Bermudes", + "BT": "Bhoutan", + "BY": "Biélorussie", + "BO": "Bolivie", + "BA": "Bosnie-Herzégovine", + "BW": "Botswana", + "BR": "Brésil", + "BN": "Brunéi Darussalam", + "BG": "Bulgarie", + "BF": "Burkina Faso", + "BI": "Burundi", + "KH": "Cambodge", + "CM": "Cameroun", + "CA": "Canada", + "CV": "Cap-Vert", + "EA": "Ceuta et Melilla", + "CL": "Chili", + "CN": "Chine", + "CY": "Chypre", + "CO": "Colombie", + "KM": "Comores", + "CG": "Congo-Brazzaville", + "CD": "Congo-Kinshasa", + "KP": "Corée du Nord", + "KR": "Corée du Sud", + "CR": "Costa Rica", + "CI": "Côte d’Ivoire", + "HR": "Croatie", + "CU": "Cuba", + "CW": "Curaçao", + "DK": "Danemark", + "DG": "Diego Garcia", + "DJ": "Djibouti", + "DM": "Dominique", + "EG": "Égypte", + "AE": "Émirats arabes unis", + "EC": "Équateur", + "ER": "Érythrée", + "ES": "Espagne", + "EE": "Estonie", + "SZ": "Eswatini", + "VA": "État de la Cité du Vatican", + "FM": "États fédérés de Micronésie", + "US": "États-Unis", + "ET": "Éthiopie", + "FJ": "Fidji", + "FI": "Finlande", + "FR": "France", + "GA": "Gabon", + "GM": "Gambie", + "GE": "Géorgie", + "GS": "Géorgie du Sud et îles Sandwich du Sud", + "GH": "Ghana", + "GI": "Gibraltar", + "GR": "Grèce", + "GD": "Grenade", + "GL": "Groenland", + "GP": "Guadeloupe", + "GU": "Guam", + "GT": "Guatemala", + "GG": "Guernesey", + "GN": "Guinée", + "GQ": "Guinée équatoriale", + "GW": "Guinée-Bissau", + "GY": "Guyana", + "GF": "Guyane française", + "HT": "Haïti", + "HN": "Honduras", + "HU": "Hongrie", + "CX": "Île Christmas", + "AC": "Île de l’Ascension", + "IM": "Île de Man", + "NF": "Île Norfolk", + "AX": "Îles Åland", + "KY": "Îles Caïmans", + "IC": "Îles Canaries", + "CC": "Îles Cocos", + "CK": "Îles Cook", + "FO": "Îles Féroé", + "FK": "Îles Malouines", + "MP": "Îles Mariannes du Nord", + "MH": "Îles Marshall", + "UM": "Îles mineures éloignées des États-Unis", + "PN": "Îles Pitcairn", + "SB": "Îles Salomon", + "TC": "Îles Turques-et-Caïques", + "VG": "Îles Vierges britanniques", + "VI": "Îles Vierges des États-Unis", + "IN": "Inde", + "ID": "Indonésie", + "IQ": "Irak", + "IR": "Iran", + "IE": "Irlande", + "IS": "Islande", + "IL": "Israël", + "IT": "Italie", + "JM": "Jamaïque", + "JP": "Japon", + "JE": "Jersey", + "JO": "Jordanie", + "KZ": "Kazakhstan", + "KE": "Kenya", + "KG": "Kirghizistan", + "KI": "Kiribati", + "XK": "Kosovo", + "KW": "Koweït", + "RE": "La Réunion", + "LA": "Laos", + "LS": "Lesotho", + "LV": "Lettonie", + "LB": "Liban", + "LR": "Libéria", + "LY": "Libye", + "LI": "Liechtenstein", + "LT": "Lituanie", + "LU": "Luxembourg", + "MK": "Macédoine", + "MG": "Madagascar", + "MY": "Malaisie", + "MW": "Malawi", + "MV": "Maldives", + "ML": "Mali", + "MT": "Malte", + "MA": "Maroc", + "MQ": "Martinique", + "MU": "Maurice", + "MR": "Mauritanie", + "YT": "Mayotte", + "MX": "Mexique", + "MD": "Moldavie", + "MC": "Monaco", + "MN": "Mongolie", + "ME": "Monténégro", + "MS": "Montserrat", + "MZ": "Mozambique", + "MM": "Myanmar (Birmanie)", + "NA": "Namibie", + "NR": "Nauru", + "NP": "Népal", + "NI": "Nicaragua", + "NE": "Niger", + "NG": "Nigéria", + "NU": "Niue", + "NO": "Norvège", + "NC": "Nouvelle-Calédonie", + "NZ": "Nouvelle-Zélande", + "OM": "Oman", + "UG": "Ouganda", + "UZ": "Ouzbékistan", + "PK": "Pakistan", + "PW": "Palaos", + "PA": "Panama", + "PG": "Papouasie-Nouvelle-Guinée", + "PY": "Paraguay", + "NL": "Pays-Bas", + "BQ": "Pays-Bas caribéens", + "PE": "Pérou", + "PH": "Philippines", + "PL": "Pologne", + "PF": "Polynésie française", + "PR": "Porto Rico", + "PT": "Portugal", + "XA": "pseudo-accents", + "XB": "pseudo-bidi", + "QA": "Qatar", + "HK": "R.A.S. chinoise de Hong Kong", + "MO": "R.A.S. chinoise de Macao", + "CF": "République centrafricaine", + "DO": "République dominicaine", + "RO": "Roumanie", + "GB": "Royaume-Uni", + "RU": "Russie", + "RW": "Rwanda", + "EH": "Sahara occidental", + "BL": "Saint-Barthélemy", + "KN": "Saint-Christophe-et-Niévès", + "SM": "Saint-Marin", + "MF": "Saint-Martin", + "SX": "Saint-Martin (partie néerlandaise)", + "PM": "Saint-Pierre-et-Miquelon", + "VC": "Saint-Vincent-et-les-Grenadines", + "SH": "Sainte-Hélène", + "LC": "Sainte-Lucie", + "SV": "Salvador", + "WS": "Samoa", + "AS": "Samoa américaines", + "ST": "Sao Tomé-et-Principe", + "SN": "Sénégal", + "RS": "Serbie", + "SC": "Seychelles", + "SL": "Sierra Leone", + "SG": "Singapour", + "SK": "Slovaquie", + "SI": "Slovénie", + "SO": "Somalie", + "SD": "Soudan", + "SS": "Soudan du Sud", + "LK": "Sri Lanka", + "SE": "Suède", + "CH": "Suisse", + "SR": "Suriname", + "SJ": "Svalbard et Jan Mayen", + "SY": "Syrie", + "TJ": "Tadjikistan", + "TW": "Taïwan", + "TZ": "Tanzanie", + "TD": "Tchad", + "CZ": "Tchéquie", + "TF": "Terres australes françaises", + "IO": "Territoire britannique de l’océan Indien", + "PS": "Territoires palestiniens", + "TH": "Thaïlande", + "TL": "Timor oriental", + "TG": "Togo", + "TK": "Tokelau", + "TO": "Tonga", + "TT": "Trinité-et-Tobago", + "TA": "Tristan da Cunha", + "TN": "Tunisie", + "TM": "Turkménistan", + "TR": "Turquie", + "TV": "Tuvalu", + "UA": "Ukraine", + "UY": "Uruguay", + "VU": "Vanuatu", + "VE": "Venezuela", + "VN": "Vietnam", + "WF": "Wallis-et-Futuna", + "YE": "Yémen", + "ZM": "Zambie", + "ZW": "Zimbabwe" +} \ No newline at end of file diff --git a/lib/i18n/it.json b/lib/i18n/it.json new file mode 100644 index 0000000..32808cb --- /dev/null +++ b/lib/i18n/it.json @@ -0,0 +1,257 @@ +{ + "AF": "Afghanistan", + "AL": "Albania", + "DZ": "Algeria", + "UM": "Altre isole americane del Pacifico", + "AD": "Andorra", + "AO": "Angola", + "AI": "Anguilla", + "AQ": "Antartide", + "AG": "Antigua e Barbuda", + "SA": "Arabia Saudita", + "AR": "Argentina", + "AM": "Armenia", + "AW": "Aruba", + "AU": "Australia", + "AT": "Austria", + "AZ": "Azerbaigian", + "BS": "Bahamas", + "BH": "Bahrein", + "BD": "Bangladesh", + "BB": "Barbados", + "BE": "Belgio", + "BZ": "Belize", + "BJ": "Benin", + "BM": "Bermuda", + "BT": "Bhutan", + "BY": "Bielorussia", + "BO": "Bolivia", + "BA": "Bosnia ed Erzegovina", + "BW": "Botswana", + "BR": "Brasile", + "BN": "Brunei", + "BG": "Bulgaria", + "BF": "Burkina Faso", + "BI": "Burundi", + "KH": "Cambogia", + "CM": "Camerun", + "CA": "Canada", + "CV": "Capo Verde", + "BQ": "Caraibi olandesi", + "CZ": "Cechia", + "EA": "Ceuta e Melilla", + "TD": "Ciad", + "CL": "Cile", + "CN": "Cina", + "CY": "Cipro", + "VA": "Città del Vaticano", + "CO": "Colombia", + "KM": "Comore", + "CD": "Congo - Kinshasa", + "CG": "Congo-Brazzaville", + "KP": "Corea del Nord", + "KR": "Corea del Sud", + "CI": "Costa d’Avorio", + "CR": "Costa Rica", + "HR": "Croazia", + "CU": "Cuba", + "CW": "Curaçao", + "DK": "Danimarca", + "DG": "Diego Garcia", + "DM": "Dominica", + "EC": "Ecuador", + "EG": "Egitto", + "SV": "El Salvador", + "AE": "Emirati Arabi Uniti", + "ER": "Eritrea", + "EE": "Estonia", + "ET": "Etiopia", + "FJ": "Figi", + "PH": "Filippine", + "FI": "Finlandia", + "FR": "Francia", + "GA": "Gabon", + "GM": "Gambia", + "GE": "Georgia", + "GS": "Georgia del Sud e Sandwich australi", + "DE": "Germania", + "GH": "Ghana", + "JM": "Giamaica", + "JP": "Giappone", + "GI": "Gibilterra", + "DJ": "Gibuti", + "JO": "Giordania", + "GR": "Grecia", + "GD": "Grenada", + "GL": "Groenlandia", + "GP": "Guadalupa", + "GU": "Guam", + "GT": "Guatemala", + "GG": "Guernsey", + "GN": "Guinea", + "GQ": "Guinea Equatoriale", + "GW": "Guinea-Bissau", + "GY": "Guyana", + "GF": "Guyana francese", + "HT": "Haiti", + "HN": "Honduras", + "IN": "India", + "ID": "Indonesia", + "IR": "Iran", + "IQ": "Iraq", + "IE": "Irlanda", + "IS": "Islanda", + "AC": "Isola Ascensione", + "CX": "Isola Christmas", + "IM": "Isola di Man", + "NF": "Isola Norfolk", + "AX": "Isole Åland", + "IC": "Isole Canarie", + "KY": "Isole Cayman", + "CC": "Isole Cocos (Keeling)", + "CK": "Isole Cook", + "FO": "Isole Fær Øer", + "FK": "Isole Falkland", + "MP": "Isole Marianne settentrionali", + "MH": "Isole Marshall", + "PN": "Isole Pitcairn", + "SB": "Isole Salomone", + "TC": "Isole Turks e Caicos", + "VI": "Isole Vergini Americane", + "VG": "Isole Vergini Britanniche", + "IL": "Israele", + "IT": "Italia", + "JE": "Jersey", + "KZ": "Kazakistan", + "KE": "Kenya", + "KG": "Kirghizistan", + "KI": "Kiribati", + "XK": "Kosovo", + "KW": "Kuwait", + "LA": "Laos", + "LS": "Lesotho", + "LV": "Lettonia", + "LB": "Libano", + "LR": "Liberia", + "LY": "Libia", + "LI": "Liechtenstein", + "LT": "Lituania", + "LU": "Lussemburgo", + "MK": "Macedonia del Nord", + "MG": "Madagascar", + "MW": "Malawi", + "MY": "Malaysia", + "MV": "Maldive", + "ML": "Mali", + "MT": "Malta", + "MA": "Marocco", + "MQ": "Martinica", + "MR": "Mauritania", + "MU": "Mauritius", + "YT": "Mayotte", + "MX": "Messico", + "FM": "Micronesia", + "MD": "Moldavia", + "MC": "Monaco", + "MN": "Mongolia", + "ME": "Montenegro", + "MS": "Montserrat", + "MZ": "Mozambico", + "MM": "Myanmar (Birmania)", + "NA": "Namibia", + "NR": "Nauru", + "NP": "Nepal", + "NI": "Nicaragua", + "NE": "Niger", + "NG": "Nigeria", + "NU": "Niue", + "NO": "Norvegia", + "NC": "Nuova Caledonia", + "NZ": "Nuova Zelanda", + "OM": "Oman", + "NL": "Paesi Bassi", + "PK": "Pakistan", + "PW": "Palau", + "PA": "Panamá", + "PG": "Papua Nuova Guinea", + "PY": "Paraguay", + "PE": "Perù", + "PF": "Polinesia francese", + "PL": "Polonia", + "PT": "Portogallo", + "PR": "Portorico", + "XA": "pseudo-accenti", + "XB": "pseudo-bidi", + "QA": "Qatar", + "HK": "RAS di Hong Kong", + "MO": "RAS di Macao", + "GB": "Regno Unito", + "CF": "Repubblica Centrafricana", + "DO": "Repubblica Dominicana", + "RE": "Riunione", + "RO": "Romania", + "RW": "Ruanda", + "RU": "Russia", + "EH": "Sahara occidentale", + "KN": "Saint Kitts e Nevis", + "LC": "Saint Lucia", + "MF": "Saint Martin", + "VC": "Saint Vincent e Grenadine", + "BL": "Saint-Barthélemy", + "PM": "Saint-Pierre e Miquelon", + "WS": "Samoa", + "AS": "Samoa americane", + "SM": "San Marino", + "SH": "Sant’Elena", + "ST": "São Tomé e Príncipe", + "SN": "Senegal", + "RS": "Serbia", + "SC": "Seychelles", + "SL": "Sierra Leone", + "SG": "Singapore", + "SX": "Sint Maarten", + "SY": "Siria", + "SK": "Slovacchia", + "SI": "Slovenia", + "SO": "Somalia", + "ES": "Spagna", + "LK": "Sri Lanka", + "US": "Stati Uniti", + "SS": "Sud Sudan", + "ZA": "Sudafrica", + "SD": "Sudan", + "SR": "Suriname", + "SJ": "Svalbard e Jan Mayen", + "SE": "Svezia", + "CH": "Svizzera", + "SZ": "Swaziland", + "TJ": "Tagikistan", + "TW": "Taiwan", + "TZ": "Tanzania", + "TF": "Terre australi francesi", + "PS": "Territori palestinesi", + "IO": "Territorio britannico dell’Oceano Indiano", + "TH": "Thailandia", + "TL": "Timor Est", + "TG": "Togo", + "TK": "Tokelau", + "TO": "Tonga", + "TT": "Trinidad e Tobago", + "TA": "Tristan da Cunha", + "TN": "Tunisia", + "TR": "Turchia", + "TM": "Turkmenistan", + "TV": "Tuvalu", + "UA": "Ucraina", + "UG": "Uganda", + "HU": "Ungheria", + "UY": "Uruguay", + "UZ": "Uzbekistan", + "VU": "Vanuatu", + "VE": "Venezuela", + "VN": "Vietnam", + "WF": "Wallis e Futuna", + "YE": "Yemen", + "ZM": "Zambia", + "ZW": "Zimbabwe" +} \ No newline at end of file diff --git a/lib/selection_dialog.dart b/lib/selection_dialog.dart index f137089..46cba2e 100644 --- a/lib/selection_dialog.dart +++ b/lib/selection_dialog.dart @@ -13,17 +13,17 @@ class SelectionDialog extends StatefulWidget { /// elements passed as favorite final List favoriteElements; - SelectionDialog(this.elements, this.favoriteElements, { - Key key, - this.showCountryOnly, - this.emptySearchBuilder, - InputDecoration searchDecoration = const InputDecoration(), - this.searchStyle, - this.showFlag - }) : - assert(searchDecoration != null, 'searchDecoration must not be null!'), - this.searchDecoration = searchDecoration.copyWith(prefixIcon: Icon(Icons.search)), - super(key: key); + SelectionDialog(this.elements, this.favoriteElements, + {Key key, + this.showCountryOnly, + this.emptySearchBuilder, + InputDecoration searchDecoration = const InputDecoration(), + this.searchStyle, + this.showFlag}) + : assert(searchDecoration != null, 'searchDecoration must not be null!'), + this.searchDecoration = + searchDecoration.copyWith(prefixIcon: Icon(Icons.search)), + super(key: key); @override State createState() => _SelectionDialogState(); @@ -35,48 +35,51 @@ class _SelectionDialogState extends State { @override Widget build(BuildContext context) => SimpleDialog( - title: Column( - children: [ - TextField( - style: widget.searchStyle, - decoration: widget.searchDecoration, - onChanged: _filterElements, - ), - ], - ), - children: [ - Container( - width: MediaQuery.of(context).size.width, - height: MediaQuery.of(context).size.height, - child: ListView( - children: [ - widget.favoriteElements.isEmpty - ? const DecoratedBox(decoration: BoxDecoration()) - : Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [] - ..addAll(widget.favoriteElements - .map( - (f) => SimpleDialogOption( - child: _buildOption(f), - onPressed: () { - _selectItem(f); - }, - ), - ) - .toList()) - ..add(const Divider())), - ]..addAll(filteredElements.isEmpty - ? [_buildEmptySearchWidget(context)] - : filteredElements.map( + title: Column( + children: [ + TextField( + style: widget.searchStyle, + decoration: widget.searchDecoration, + onChanged: _filterElements, + ), + ], + ), + children: [ + Container( + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height * 0.7, + child: ListView( + children: [ + widget.favoriteElements.isEmpty + ? const DecoratedBox(decoration: BoxDecoration()) + : Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ...widget.favoriteElements.map( + (f) => SimpleDialogOption( + child: _buildOption(f), + onPressed: () { + _selectItem(f); + }, + ), + ), + const Divider(), + ], + ), + if (filteredElements.isEmpty) + _buildEmptySearchWidget(context) + else + ...filteredElements.map( (e) => SimpleDialogOption( key: Key(e.toLongString()), child: _buildOption(e), onPressed: () { _selectItem(e); }, - ))) - ) + ), + ), + ], + ), ), ], ); @@ -87,22 +90,23 @@ class _SelectionDialogState extends State { child: Flex( direction: Axis.horizontal, children: [ - widget.showFlag ? Flexible( - child: Padding( - padding: const EdgeInsets.only(right: 16.0), - child: Image.asset( - e.flagUri, - package: 'country_code_picker', - width: 32.0, + if (widget.showFlag) + Flexible( + child: Padding( + padding: const EdgeInsets.only(right: 16.0), + child: Image.asset( + e.flagUri, + package: 'country_code_picker', + width: 32.0, + ), ), ), - ) : Container(), Expanded( flex: 4, child: Text( widget.showCountryOnly - ? e.toCountryStringOnly() - : e.toLongString(), + ? e.toCountryStringOnly(context) + : e.toLongString(context), overflow: TextOverflow.fade, ), ), @@ -116,7 +120,9 @@ class _SelectionDialogState extends State { return widget.emptySearchBuilder(context); } - return Center(child: Text('No Country Found')); + return Center( + child: Text('No country found'), + ); } @override diff --git a/pubspec.yaml b/pubspec.yaml index e496bcd..374219f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,10 +1,10 @@ name: country_code_picker description: A flutter package for showing a country code selector. In addition it gives the possibility to select a list of favorites countries, as well as to search using a simple searchbox -version: 1.2.4 +version: 1.3.0 homepage: https://github.com/Salvatore-Giordano/CountryCodePicker environment: - sdk: ">=1.19.0 <3.0.0" + sdk: ">=2.2.2 <3.0.0" dependencies: flutter: @@ -13,3 +13,6 @@ dependencies: flutter: assets: - flags/ + - packages/country_code_picker/i18n/en.json + - packages/country_code_picker/i18n/it.json + - packages/country_code_picker/i18n/fr.json