import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart'; class AppLocalizations { AppLocalizations(this.locale); final Locale locale; static AppLocalizations of(BuildContext context) => Localizations.of(context, AppLocalizations)!; static List languages() => ['en']; String get languageCode => locale.languageCode; int get languageIndex => languages().contains(languageCode) ? languages().indexOf(languageCode) : 0; String getText(String key) => (kTranslationsMap[key] ?? {})[locale.languageCode] ?? ''; String getVariableText({ String enText = '', }) => [enText][languageIndex]; } class AppLocalizationsDelegate extends LocalizationsDelegate { const AppLocalizationsDelegate(); @override bool isSupported(Locale locale) => AppLocalizations.languages().contains(locale.languageCode); @override Future load(Locale locale) => SynchronousFuture(AppLocalizations(locale)); @override bool shouldReload(AppLocalizationsDelegate old) => false; } final kTranslationsMap = >>[].reduce((a, b) => a..addAll(b));