Я прочитал предыдущие вопросы, связанные с этой топикой c, но не смог понять, что происходит. Я думаю, что я сделал точно такой же процесс, описанный в этом официальном видео дартс / флаттер - https://www.youtube.com/watch?v=SmTCmDMi4BY
То, что я пытаюсь сделать, очень просто. Я хочу сделать вызов API и мне нужно дождаться ответа. но я не вижу, как это работает. Может быть, мое понимание async / wait неверно. Если я проверяю вывод консоли, я получаю вот так
Staring the Program
Ending the Program
Got the questions list
[Instance of 'Question', Instance of 'Question', Instance of 'Question', Instance of 'Question', Instance of 'Question', Instance of 'Question', Instance of 'Question', Instance of 'Question', Instance of 'Question', Instance of 'Question']
Может кто-нибудь помочь мне с этим.
import 'package:http/http.dart' as http;
import 'dart:convert';
void main() {
print('Staring the Program');
getQuestions();
print('Ending the Program');
}
void getQuestions() async {
QuizModel qm = QuizModel();
List<Question> questionsList = await qm.getQuestions();
print('Got the questions list');
print(questionsList);
}
class Question {
String question;
bool answer;
Question({this.question, this.answer});
}
class QuizModel {
var quizData;
Future<List<Question>> getQuestions() async {
NetworkHelper networkHelper =
NetworkHelper('https://opentdb.com/api.php?amount=10&type=boolean');
quizData = await networkHelper.getData();
final List<Question> questionsList = [];
for (final question in quizData['results']) {
bool answer;
question['correct_answer'] == 'True' ? answer = true : answer = false;
questionsList
.add(Question(question: question['question'], answer: answer));
}
return questionsList;
}
}
class NetworkHelper {
final String _url;
NetworkHelper(this._url);
Future<dynamic> getData() async {
http.Response response = await http.get(_url);
if (response.statusCode == 200) {
var jsonData = jsonDecode(response.body);
return jsonData;
} else {
print(response.statusCode);
}
}
}