Я новичок в Dart и имею опыт работы с iOS, поэтому я могу неправильно использовать язык, что приводит к тому, что мой код не работает должным образом, но я также не могу найти решение в Интернете и подумал, что задам его здесь, если кто-то еще испытал это и починил это.
Итак, что я пытаюсь сделать, так это заставить фабрику моделей создать источник данных, в котором вы передаете тип запроса (GET или POST), передаете конечную точку и некоторые параметры. Затем он вернет вас в будущее, в котором вы прослушиваете вызов then()
, который вызывается, когда сетевой запрос успешен/не пройден. Код, который у меня есть в настоящее время, работает до момента, когда я вызываю завершение.complete(responseObject);... после этого ничего не происходит.
Код для нескольких задействованных функций:
Внутри фабрики моделей:
BaseDataSource bds = new BaseDataSource();
Map params = {"api_key": "random","session_id": "random", "account_id": "random"};
Future<Map> request = bds.makeRequest(NetworkingRequestType.GET, params, "music/songs");
request.then((Map responseObject) {
});
Внутри источника данных:
enum NetworkingRequestType {
GET, POST
}
class BaseDataSource {
static final String baseServerURL = config[appRunMode]["baseServerURL"];
Future<Map> makeRequest(NetworkingRequestType type, Map params, String endpoint) {
Future<Map> completion;
switch (type) {
case NetworkingRequestType.GET:
completion = _makeGetRequest(endpoint, params);
break;
case NetworkingRequestType.POST:
break;
}
return completion;
}
Future<Map> _makeGetRequest(String endpoint, Map params) {
final uri = new Uri(path: "${baseServerURL}${endpoint}",
queryParameters: params);
return HttpRequest.getString("${uri}").then(JSON.decode);
}
}
completion.future
, ноcompletion
— этоFuture
, а неCompleter
? - person lrn   schedule 15.01.2015