world_countries 1.4.0
world_countries: ^1.4.0 copied to clipboard
Sealed world data in form of Flutter widgets (country, phone, currency pickers, etc.).
1.4.0 #
NEW FEATURES
- 🦾 Language translations now also support all
GlobalMaterialLocalization+GlobalCupertinoLocalizationslocales. - You can now provide translation caches list in
TypedLocaleDelegateand it's newselectiveCacheconstructor. This is useful when you don't want to cache the translations for the specific unused ISO objects. For example you are only using country pickers, so you might not need currency an language translations. In this case you can provide onlycountriesForTranslationCachefor the countries translation cache. - The
TypedLocale(so andIsoLocale) has new fields for storing translations cache (see the point above). - The
TypedLocale(so andIsoLocale) are now inherited fromBasicLocale(so andJsonEncodable), so they can be used in the translations directly. - Added
copyWithmethod in inTypedLocale(so andIsoLocale). - Added new
internationalNamegetter inIsoStandardizedinterface, representing the international name of the ISO object. - Added new
UpperCaseMapclass, thatUpperCaseIsoMapextends, a simple version ofUpperCaseIsoMapwithout key length checks andIsoStandardizedvalues requirement. - The
mapin theRegionalBlocis nowUpperCaseMap(with all it's benefits). - Added new
maybeFromAcronymfactory method in theRegionalBloc. - Added new
BasicLocaleclass, thatTranslatedNameextends. Representing a type-safe world locale (language, country/region code and script). - Deprecated
maybeTranslateandtranslatemethods for translated classes (usemaybeTranslationandtranslationinstead). - Added new
commonNamesCacheMapmethod for all ISO based sealed classes collections, which allows to create a cache map of common names translations for the givenBasicLocale.
BREAKING CHANGES
Because of the BasicLocale changes (described above), translation() and maybeTranslation() methods on the Translated classes now require BasicLocale input. If you are not using those methods directly, then you don't need to change anything, otherwise you will need to do small adjustment - wrap the content of those methods with a BasicLocale.
Before:
print(iso?.maybeTranslation(LangPor()));
After:
print(iso?.maybeTranslation(BasicLocale(LangPor())));
Or just:
- Enable Regular Expressions in your IDE's Find and Replace panel.
- In the Find field, enter the regex:
(translation\()(.*)(\)) - In the Replace field, enter:
$1BasicLocale($2)$3 - Execute the replace operation.
1.3.1 #
NEW FEATURES
- Use of UX/UI interpretation of Hick's Law for conditionally showing search bar in the SearchableIndexedListViewBuilder - If no
showSearchBarvalue specified, it usesPickersThemeData.showHeadervalue as before but instead of falling back to default hardcodedfalsevalue it fallbacks to items count conditionif (items.length > 5). PickersThemeData.showHeaderis now nullable.- Fix thousands separator for CHF.
codeOtheris no longer nullable (in allIsoStandardizedclasses).- Added new compile time constant and case-insensitive code maps (
UpperCaseIsoMaps) in every ISO class (accessible as static constants via.map,.codeMap,.codeNumericMap, etc.). - Factory constructors and methods now using those maps if no (optional) array is provided there.
- Factory constructors and methods in
IsoStandardizedclasses now allow non-String inputs - anyObject, for example you can now useStringBufferorEnuminstances directly:
enum IsoEnum {de, fr, ar} // On .fromCode(IsoEnum.de) call it will use "DE" input.
or you can basically use any custom class with toString() override:
class CustomIsoCodeClass {
const CustomIsoCodeClass({String code = '123', this.foo}) : _code = code;
final String _code;
final Foo? foo;
@override
String toString() => _code; // Has to override toString() with ISO value.
}
// On .fromAnyCode(CustomIsoCodeClass(code: ' 321 ')) call it will use "321" input.
REFACTOR
- Refactored asserts in
maybeMapIsoCodemethod. - Fixed typos in CHANGELOG and README.
1.2.0 #
NEW FEATURES
- Added new static
maybeFrom*methods and refactored old ones. They are also now accept anyObject?input instead of justString?. - Added new and refactored old tests with a performance in mind.
- Added new
firstIsoWhere*extensions on ISO iterables. - Improved annotations.
- Added
is*boolean getters for all ISO objects, for example:
if (isoObject.isFra) return _onFrench();
is more readable and shorter equivalent of this check:
if (isoObject == const LangFra()) return _onFrench();
1.1.0 #
NEW FEATURES
-
Added new constructor called
permissive- which allow the creation of custom class instances that are not fully compatible with the ISO standard. -
Translatedclass is now sealed - which means you can now directly compare instances of different ISO classes directly (for example in switch statements). -
Added theme extensions that you can specify in your
ThemeDatato provide global theme to your pickers. You can findPickersThemeData,CountryTileThemeData,CurrencyTileThemeDataandLanguageTileThemeData:
MaterialApp(
...
theme: ThemeData(
/// And also [CurrencyTileThemeData], [LanguageTileThemeData]...
extensions: const <ThemeExtension>[
PickersThemeData(primary: true), // Specify global pickers theme.
CountryTileThemeData(emojiFamily: EmojiFamily.twemoji),
],
)
);
This way you can specify for example that all your pickers lists are primary and define globally use of Twemoji as main flags font emoji family in all Country/Phone pickers in the app.
1.0.0 #
🎉 First anniversary and first stable release!
NEW FEATURES
-
Added new getter for
TranslatedNamename calledcommon, which might be useful in some cases whennameis being used by a parent class. -
Added a lot of translations from the Symfony.
-
Currencies translations now support all GlobalMaterialLocalizations and GlobalCupertinoLocalizations locales.
-
Updated LICENSE.
-
Added CLI tool for removing unused emoji font families on the Web platform
dart run world_countries:clean_build [--keep twemoji,notoemoji,openmoji] -
Added
fromSubtagsconstructors forIsoLocaleandTypedLocaleclasses. -
Added
defaultLocaleMapResolutionfor aTypedLocaleDelegatethat maps:filFilipino (Pilipino) totlTagalog.gswSwiss German Alemannic Alsatian tode_CHGerman (Switzerland).bs_CyrlBosnian (written in the Cyrillic script) tosrSerbian.
BREAKING CHANGES
- Removed code marked as
Deprecatedin previous releases. - Replaced old
FiatCurrency.listwith a newFiatCurrency.listExtended. - Removed
FiatCurrency.regularList(please useFiatCurrency.listinstead). - Marked Croatian Kuna as
Deprecated(currencies). - Moved helpers of world_country package to separate library:
BuildContextExtension,FunctionalPlatform,NameTextInput,ClearButtonandUiConstants. To migrate just use IDE suggestions or manually replace old references:
import "package:world_countries/world_countries.dart";
to a new one:
import "package:world_countries/helpers.dart";
0.9.0 #
NEW FEATURES
- Added new interface
IsoTranslatedwhich combinesTranslatedandIsoStandardizedinterfaces. - Added
standard*static constants in WorldCountry class referencing different names of the ISO 3166-1 standard. - Improved documentation in README, added FAQ and demo web-site (Flutter WASM).
REFACTORING
- Removed
NavigatorContextExtensionfrom exports, so you don't need to specify it no longer viahide.
0.8.0 #
BREAKING CHANGE
- Country and PhoneCode pickers now using
TypedLocaleas translation parameter (to migrate just wrap your previous language there with IsoLocale()).
NEW FEATURES
-
Added the
TypedLocaleDelegateclass, which can be used in thelocalizationsDelegates(such as inMaterialApp). It attempts to convert the string-basedLocaleto a strongly typedTypedLocale, which is then used in all pickers to provide translations for country/currency/language names. The detected TypedLocale? is also accessible viaTypedLocaleDelegate.maybeOf(context)or simplycontext.maybeLocale. -
All pickers can have a local translation override via the
translationparameter (which will be used instead of the TypedLocale translation). -
Translated classes now also have translate() and maybeTranslate() methods to translate it's data (country/currency/language names).
-
Added new factories to ISO classes - fromAnyCode, which do the length and type checks and redirects to other fromCode* constructors.
-
Added new static method to ISO classes - maybeFromAnyCode, which works same way as fromAnyCode, but doesn't throws StateErrors if no currency object is found.
-
Added maybeMapIsoCode method to String extensions, which is used under the hood of (maybe)fromAnyCode.
REFACTOR
- Slightly changed UI of default picker's tiles - added padding on top of the leading widget and swapped title with subtitle (because of translations provided to title).
- Named classes now has boolean flag (short, defaults to true).
- TranslatedName class by default returns "name" value on toString().
- Refactored dollar symbols in toString() methods.
0.7.0 #
This is a general update that synchronizes underlying Dart package updates (related to translations and interfaces), as a preparation for a bigger upcoming update for localization delegates.
NEW FEATURES
-
Added and updated translations for currencies, languages, and countries (79 translations for each minimum).
-
Added translation and maybeTranslation methods for Translated classes.
-
Refactored factory constructors for IsoStandardized classes. There is an optional parameter to provide a custom list.
-
Added a new sealed class called Scripts, based on the ISO 15924 standard.
-
The NaturalLanguage class now contains information about scripts (writing systems) and translations of the language name to other languages.
-
Added a regularList getter for a list of regular currencies (excluding 10 currencies from the specialPurposeList).
-
Fixed several English currency names.
0.6.0 #
NEW FEATURE: New searchSuggestions method in every picker (for use in suggestionsBuilder of SearchAnchor)
- refactor(mixin): added new mixins
- refactor(docs): improve example and docs
- feat(ui): added search suggestions for search anchors
0.5.0 #
- refactor(model): factory constructors and static methods for data classes creation now implicitly trimming and comparing uppercase string inputs
- feat(model): added new data sealed classes related to world blocs
- feat(data): regional blocs are now part of the world country data
- feat(docs): added regional blocs in the example
- refactor(lints): fixing old ignores and new linter rules
- chore(deps): updates of dev_dependencies
- docs(example): added web (flutter wasm) example of data provided in this package.
BREAKING CHANGES
- refactor(data)!: compile time static const. data in lists are now sorted alphabetically by the (3 letter) code
0.2.2 #
- feat: added extensions for Locale
- style: renamed BuildContextExtensions > BuildContextExtension
- chore(deps): bump internal dev_dependencies versions
0.2.1 #
- docs: provided structure screenshot
- test: increase code coverage to 98%+
0.2.0 #
- test: increase code coverage to 96%+
0.1.0 #
- docs: provided code coverage links and badge
0.0.1 #
- initial version.