loadLangsFromLocal function
Implementation
Future<String?> loadLangsFromLocal(String locale,
String needLocale, Function(LangData lang) setLang, Function(List<LangData> lang) setLangs) async {
try{
var directory = await getApplicationDocumentsDirectory();
var directoryPath = directory.path;
var _file = File('$directoryPath/listlangs.json');
if (!await _file.exists())
return null;
final contents = await _file.readAsString();
var data = json.decode(contents);
dprint("loadLangsFromLocal $data");
List<LangData> t = data.map((f) {
var b = LangData.fromJson(f);
dprint("loadLangsFromLocal ${b.locale}");
return b;
} ).cast<LangData>().toList();
setLangs(t); // parent.appLangs = t;
// dprint("loadLangsFromLocal appLangs ${t.appLangs}");
for (var item in t){
var _doc = "${item.app}_${item.locale}";
var _file = File('$directoryPath/$_doc.json');
if (!await _file.exists())
return null;
final contents = await _file.readAsString();
dprint('read local lang $directoryPath/$_doc.json');
item.data = json.decode(contents);
if (locale.isNotEmpty){
if (locale == item.locale)
setLang(item); //item.data, item.locale, context, item.direction);
}else
if (needLocale == item.locale)
setLang(item); // item.data, item.locale, context, item.direction);
}
}catch(ex){
return "model loadLangsFromLocal " + ex.toString();
}
return null;
}