Вы можете использовать callback
или async await
1.Обратный вызов
static void load(final int levelNr, void callbackFunction(Level level)) {
final String path = "../json/$levelNr.json";
HttpRequest.getString(path).then((lvlJson) {
Map data = JSON.decode(lvlJson);
Level level = _levelFromMap(data);
callbackFunction(level);
});
}
Использование:
load(levelNrValue, (level) {
model.level = level;
//refresh view or data to reflect the change in model.
})
2.async и await
static Future<Level> load(final int levelNr) async {
final String path = "../json/$levelNr.json";
final response = await HttpRequest.getString(path);
Map data = JSON.decode(lvlJson);
return _levelFromMap(data);
}
Использование:
1) Использование обратного вызова в месте вызова:
load(levelNrValue).then((level) {
model.level = level;
//refresh view or data to reflect the change in model.
});
2) Использование асинхронногов месте вызова также:
final level = await load(levelNrValue);
model.level = level;
Примечание: две вышеупомянутые строки должны быть внутри некоторого асинхронного метода.
void loadDate(int levelNrValue, Game model) async {
final level = await load(levelNrValue);
model.level = level;
//refresh view or data to reflect the change in model.
}