import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart' show SynchronousFuture; import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/utils/i18n_en.dart'; class AppLocalization extends LocaleCodeAware with LocalizationsProvider { AppLocalization(this.locale) : super(locale.toString()); final Locale locale; static Locale createLocale(String locale) { if (!kLanguages.contains(locale)) { return Locale('en'); } final parts = locale.split('_'); return Locale(parts[0], parts.length > 1 ? parts[1] : null); } static AppLocalization of(BuildContext context) { return Localizations.of(context, AppLocalization); } } class AppLocalizationsDelegate extends LocalizationsDelegate { const AppLocalizationsDelegate(); @override bool isSupported(Locale locale) => kLanguages.contains(locale.toString()); @override Future load(Locale locale) { return SynchronousFuture(AppLocalization(locale)); } @override bool shouldReload(AppLocalizationsDelegate old) => false; }