Flutter GetX initialise translation source from a remote server?


I’m trying to use getX as flutter state management tool. GetX has its way handling language translation. One thing that I’m not sure is how could I initialise translation source from a remote server instead of hard code the translations. In such a way, I have the benefit of modifying translation without the need to release a new app.

Any suggest are welcome. Thanks.


I have DotNet WebAPI backend and I am sending translations like the following format:

public class TranslationsController : ControllerBase
    public async Task<IActionResult> GetAll()
        return Ok(new
            en_US = new
                hi = "Hi",
                bye = "Bye"
            bn_BD = new
                hi = "ওহে",
                bye = "বিদায়"

And my AppTranslations class:

class AppTranslations extends Translations {
  final Map<String, String> en_US;
  final Map<String, String> bn_BD;

  AppTranslations({required this.en_US, required this.bn_BD});

  static AppTranslations fromJson(dynamic json) {
    return AppTranslations(
    en_US: Map<String, String>.from(json["en_US"]),
    bn_BD: Map<String, String>.from(json["bn_BD"]),

 Map<String, Map<String, String>> get keys => {
    "en_US": en_US,
    "bn_BD": bn_BD,

My TranslationProvider:

class TranslationProvider extends GetConnect {
  Future<AppTranslations?> getTranslations() async {
  final url = '';

  final response = await get(url, decoder: AppTranslations.fromJson);

   if (response.hasError) {
     return Future.error(response.statusText!);

   return response.body;

Then in my main function:

void main() async {
 final translationProvider = TranslationProvider();

 final translations = await translationProvider.getTranslations();

 runApp(MyApp(translations: translations!));

And here’s my MyApp:

class MyApp extends StatelessWidget {
 final AppTranslations translations;

 const MyApp({Key? key, required this.translations}) : super(key: key);

 Widget build(BuildContext context) {
  return GetMaterialApp(
    translations: translations,
    locale: Locale("en_US"),
    home: MyHomePage(),

And you are done! Now you can update your translations in the API and the update will reflect on the app.

Answered By – S. M. JAHANGIR

Answer Checked By – David Goodson (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published.