LanguageDataProvider.network constructor
Create an instance of data from network
.
The parentPath
is a path that point to codes.json
file but not includes
it.
Ex: https://example.com/assets/resources/language_helper/codes.json
and your languages is in
https://example.com/assets/resources/language_helper/languages/en.json
...
The parentPath
will be https://example.com/assets/resources
.
Implementation
factory LanguageDataProvider.network(
String parentUrl, {
Client? client,
Map<String, String>? headers,
}) {
return LanguageDataProvider._((code) async {
String path = Utils.removeLastSlash(parentUrl);
final uri =
Uri.parse('$path/language_helper/languages/${code.code}.json');
String json = await Utils.getUrl(uri, client: client, headers: headers);
if (json.isNotEmpty) {
return {code: LanguageDataSerializer.valuesFromJson(json)};
}
return {};
}, () async {
String path = Utils.removeLastSlash(parentUrl);
final uri = Uri.parse('$path/language_helper/codes.json');
final json = await Utils.getUrl(uri, client: client, headers: headers);
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 {};
});
}