#android #flutter #dart
#Android #флаттер #dart
Вопрос:
У меня есть функция, которая вызывает запрос на создание нового ученика на сервере
createStudents(String studentName) async {
await Webservice()
.postReq(new API().createNewStudent(context), studentName)
.then((value) {
if (value is Students) {
Students std = value;
helper.initializeDatabase();
helper.insertStudents(std);
return "Sucessfull";
} else {
return value;
}
});
}
в этом примере я отправил имя студента, и на сервере создается новый студент.
в случае успеха она возвращает объект student.
и если это не удается, возвращается сообщение.
я отладил и проверил значение в этой функции, но оно всегда возвращает значение null.
при успешном выполнении он возвращает объект Student, но функция createStudents возвращает значение null. то же самое для сообщения об ошибке
var ab = await createTags(data);
print(ab);
ab всегда равно null .
я не знаю, почему он всегда возвращает null.
Ответ №1:
Я не уверен на 100%, но я предполагаю, что вы забыли оператор «return»
createStudents(String studentName) async {
//Here should be return
final value = await Webservice()
.postReq(new API().createNewStudent(context), studentName);
if (value is Students) {
Students std = value;
helper.initializeDatabase();
helper.insertStudents(std);
return "Sucessfull";
} else {
return value;
}
}
Комментарии:
1. конечно, но реальный вопрос в том, почему он использует оба
then
иawait
? это можно было бы значительно упростить, используя толькоawait
материал2. именно это я и имел в виду
3. существует if else , поэтому он должен возвращаться в любом случае. я проверил, что он возвращает, но когда я его ловлю, он выдает null
4. @UmeshChakradhar нет, вы возвращаете значение из
then
обратного вызова, а не из своей функции — проверьте ответ, как это должно быть сделано, используя толькоawait
материал (а не комбинациюawait
иthen
)5. @UmeshChakradhar вы можете, но ваш код будет более сложным, и, что еще хуже, у вас может быть больше «глупых» ошибок, как в вашем вопросе — сначала все выглядит нормально (вы возвращаете значение), но все равно
null
возвращается