LanguageDataProvider.asset constructor
LanguageDataProvider.asset(
- String parentPath
Create an instance of data from asset
.
The parentPath
is a path that point to codes.json
file but not includes
it.
Ex: assets/resources/language_helper/codes.json
and your languages is in
assets/resources/language_helper/languages/en.json
...
The parentPath
will be assets/resources
.
Implementation
factory LanguageDataProvider.asset(String parentPath) {
return LanguageDataProvider._((code) async {
String path = Utils.removeLastSlash(parentPath);
final uri =
Uri.parse('$path/language_helper/languages/${code.code}.json');
String json = await _loadAsset(uri.path);
if (json.isNotEmpty) {
return {code: LanguageDataSerializer.valuesFromJson(json)};
}
return {};
}, () async {
String path = Utils.removeLastSlash(parentPath);
final uri = Uri.parse('$path/language_helper/codes.json');
final json = await _loadAsset(uri.path);
if (json.isNotEmpty) {
final decoded = jsonDecode(json).cast<String>() as List<String>;
final set = decoded.map((e) => LanguageCodes.fromCode(e)).toSet();
return Future.value(set);
}
return {};
});
}