const textDirectionDeclaration = """ @override TextDirection get textDirection => TextDirection.ltr; """; const classDeclaration = """ class GeneratedLocalizationsDelegate extends LocalizationsDelegate { const GeneratedLocalizationsDelegate(); List get supportedLocales { return const [ """; const part1 = """ import \'dart:async\'; import \'package:flutter/foundation.dart\'; import \'package:flutter/material.dart\'; class S implements WidgetsLocalizations { const S(); static S current; static const GeneratedLocalizationsDelegate delegate = GeneratedLocalizationsDelegate(); static S of(BuildContext context) => Localizations.of(context, S); """; const part2 = """ ]; } LocaleListResolutionCallback listResolution({Locale fallback, bool withCountry = true}) { return (List locales, Iterable supported) { if (locales == null || locales.isEmpty) { return fallback ?? supported.first; } else { return _resolve(locales.first, fallback, supported, withCountry); } }; } LocaleResolutionCallback resolution({Locale fallback, bool withCountry = true}) { return (Locale locale, Iterable supported) { return _resolve(locale, fallback, supported, withCountry); }; } @override Future load(Locale locale) { final String lang = getLang(locale); if (lang != null) { switch (lang) { """; const part3 = """ default: } } S.current = const S(); return SynchronousFuture(S.current); } @override bool isSupported(Locale locale) => _isSupported(locale, true); @override bool shouldReload(GeneratedLocalizationsDelegate old) => false; Locale _resolve(Locale locale, Locale fallback, Iterable supported, bool withCountry) { if (locale == null || !_isSupported(locale, withCountry)) { return fallback ?? supported.first; } final Locale languageLocale = Locale(locale.languageCode, ""); if (supported.contains(locale)) { return locale; } else if (supported.contains(languageLocale)) { return languageLocale; } else { final Locale fallbackLocale = fallback ?? supported.first; return fallbackLocale; } } bool _isSupported(Locale locale, bool withCountry) { if (locale != null) { for (Locale supportedLocale in supportedLocales) { if (supportedLocale.languageCode != locale.languageCode) { continue; } if (supportedLocale.countryCode == locale.countryCode) { return true; } if (true != withCountry && (supportedLocale.countryCode == null || supportedLocale.countryCode.isEmpty)) { return true; } } } return false; } } String getLang(Locale l) => l == null ? null : l.countryCode != null && l.countryCode.isEmpty ? l.languageCode : l.toString(); """;