Files
CountryCodePicker/lib/country_localizations.dart
Salvatore Giordano 2a35d65e65 1.3.0
2020-03-08 22:52:15 +01:00

64 lines
1.5 KiB
Dart

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class CountryLocalizations {
final Locale locale;
CountryLocalizations(this.locale);
static CountryLocalizations of(BuildContext context) {
return Localizations.of<CountryLocalizations>(
context,
CountryLocalizations,
);
}
static const LocalizationsDelegate<CountryLocalizations> delegate =
_CountryLocalizationsDelegate();
Map<String, String> _localizedStrings;
Future<bool> load() async {
print('locale.languageCode: ${locale.languageCode}');
String jsonString = await rootBundle.loadString(
'packages/country_code_picker/i18n/${locale.languageCode}.json');
Map<String, dynamic> jsonMap = json.decode(jsonString);
_localizedStrings = jsonMap.map((key, value) {
return MapEntry(key, value.toString());
});
return true;
}
String translate(String key) {
return _localizedStrings[key];
}
}
class _CountryLocalizationsDelegate
extends LocalizationsDelegate<CountryLocalizations> {
const _CountryLocalizationsDelegate();
@override
bool isSupported(Locale locale) {
return [
'en',
'it',
'fr',
].contains(locale.languageCode);
}
@override
Future<CountryLocalizations> load(Locale locale) async {
CountryLocalizations localizations = new CountryLocalizations(locale);
await localizations.load();
return localizations;
}
@override
bool shouldReload(_CountryLocalizationsDelegate old) => false;
}