'Get a list of all available languages in flutter

I need all available languages (with variants, like "English (United Kingdom)" ) in a DropdownButton, i couldn't find in the flutter SDK or dart builtins, so i ended scraping this site, and creating a filelang_list.dart with the following content

const LANGLIST = ["Afrikaans","Afrikaans (South Africa)","Arabic","Arabic (U.A.E.)","Arabic (Bahrain)","Arabic (Algeria)","Arabic (Egypt)","Arabic (Iraq)","Arabic (Jordan)","Arabic (Kuwait)","Arabic (Lebanon)","Arabic (Libya)","Arabic (Morocco)","Arabic (Oman)","Arabic (Qatar)","Arabic (Saudi Arabia)","Arabic (Syria)","Arabic (Tunisia)","Arabic (Yemen)","Azeri (Latin)","Azeri (Latin) (Azerbaijan)","Azeri (Cyrillic) (Azerbaijan)","Belarusian","Belarusian (Belarus)","Bulgarian","Bulgarian (Bulgaria)","Bosnian (Bosnia and Herzegovina)","Catalan","Catalan (Spain)","Czech","Czech (Czech Republic)","Welsh","Welsh (United Kingdom)","Danish","Danish (Denmark)","German","German (Austria)","German (Switzerland)","German (Germany)","German (Liechtenstein)","German (Luxembourg)","Divehi","Divehi (Maldives)","Greek","Greek (Greece)","English","English (Australia)","English (Belize)","English (Canada)","English (Caribbean)","English (United Kingdom)","English (Ireland)","English (Jamaica)","English (New Zealand)","English (Republic of the Philippines)","English (Trinidad and Tobago)","English (United States)","English (South Africa)","English (Zimbabwe)","Esperanto","Spanish","Spanish (Argentina)","Spanish (Bolivia)","Spanish (Chile)","Spanish (Colombia)","Spanish (Costa Rica)","Spanish (Dominican Republic)","Spanish (Ecuador)","Spanish (Castilian)","Spanish (Spain)","Spanish (Guatemala)","Spanish (Honduras)","Spanish (Mexico)","Spanish (Nicaragua)","Spanish (Panama)","Spanish (Peru)","Spanish (Puerto Rico)","Spanish (Paraguay)","Spanish (El Salvador)","Spanish (Uruguay)","Spanish (Venezuela)","Estonian","Estonian (Estonia)","Basque","Basque (Spain)","Farsi","Farsi (Iran)","Finnish","Finnish (Finland)","Faroese","Faroese (Faroe Islands)","French","French (Belgium)","French (Canada)","French (Switzerland)","French (France)","French (Luxembourg)","French (Principality of Monaco)","Galician","Galician (Spain)","Gujarati","Gujarati (India)","Hebrew","Hebrew (Israel)","Hindi","Hindi (India)","Croatian","Croatian (Bosnia and Herzegovina)","Croatian (Croatia)","Hungarian","Hungarian (Hungary)","Armenian","Armenian (Armenia)","Indonesian","Indonesian (Indonesia)","Icelandic","Icelandic (Iceland)","Italian","Italian (Switzerland)","Italian (Italy)","Japanese","Japanese (Japan)","Georgian","Georgian (Georgia)","Kazakh","Kazakh (Kazakhstan)","Kannada","Kannada (India)","Korean","Korean (Korea)","Konkani","Konkani (India)","Kyrgyz","Kyrgyz (Kyrgyzstan)","Lithuanian","Lithuanian (Lithuania)","Latvian","Latvian (Latvia)","Maori","Maori (New Zealand)","FYRO Macedonian","FYRO Macedonian (Former Yugoslav Republic of Macedonia)","Mongolian","Mongolian (Mongolia)","Marathi","Marathi (India)","Malay","Malay (Brunei Darussalam)","Malay (Malaysia)","Maltese","Maltese (Malta)","Norwegian (Bokm?l)","Norwegian (Bokm?l) (Norway)","Dutch","Dutch (Belgium)","Dutch (Netherlands)","Norwegian (Nynorsk) (Norway)","Northern Sotho","Northern Sotho (South Africa)","Punjabi","Punjabi (India)","Polish","Polish (Poland)","Pashto","Pashto (Afghanistan)","Portuguese","Portuguese (Brazil)","Portuguese (Portugal)","Quechua","Quechua (Bolivia)","Quechua (Ecuador)","Quechua (Peru)","Romanian","Romanian (Romania)","Russian","Russian (Russia)","Sanskrit","Sanskrit (India)","Sami (Northern)","Sami (Northern) (Finland)","Sami (Skolt) (Finland)","Sami (Inari) (Finland)","Sami (Northern) (Norway)","Sami (Lule) (Norway)","Sami (Southern) (Norway)","Sami (Northern) (Sweden)","Sami (Lule) (Sweden)","Sami (Southern) (Sweden)","Slovak","Slovak (Slovakia)","Slovenian","Slovenian (Slovenia)","Albanian","Albanian (Albania)","Serbian (Latin) (Bosnia and Herzegovina)","Serbian (Cyrillic) (Bosnia and Herzegovina)","Serbian (Latin) (Serbia and Montenegro)","Serbian (Cyrillic) (Serbia and Montenegro)","Swedish","Swedish (Finland)","Swedish (Sweden)","Swahili","Swahili (Kenya)","Syriac","Syriac (Syria)","Tamil","Tamil (India)","Telugu","Telugu (India)","Thai","Thai (Thailand)","Tagalog","Tagalog (Philippines)","Tswana","Tswana (South Africa)","Turkish","Turkish (Turkey)","Tatar","Tatar (Russia)","Tsonga","Ukrainian","Ukrainian (Ukraine)","Urdu","Urdu (Islamic Republic of Pakistan)","Uzbek (Latin)","Uzbek (Latin) (Uzbekistan)","Uzbek (Cyrillic) (Uzbekistan)","Vietnamese","Vietnamese (Viet Nam)","Xhosa","Xhosa (South Africa)","Chinese","Chinese (S)","Chinese (Hong Kong)","Chinese (Macau)","Chinese (Singapore)","Chinese (T)","Zulu","Zulu (South Africa)"];

so i can import in other files and uses this list.

Is this implementation ok? is there a method from flutter that does the same thing?



Solution 1:[1]

You can retrieve all supportedLocales that you already defined in MateralApp .

context.findAncestorWidgetOfExactType<MaterialApp>()?.supportedLocales

Solution 2:[2]

Flutter and Dart don't have this built in. If this solution works for you, I don't see an issue with it.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Hosein Haqiqian
Solution 2 Benedikt J Schlegel