我正在使用sqflit存储一些数据..正在存储的数据是在两个不同表中的问题和答案..我正试图从两个表中检索数据并将它们存储在类型问题列表中..像这样:
Future<bool> getAllQuestions(String poll_id) async {
print("Poll id is: " + poll_id);
var dbClient = await db;
var questions = await dbClient.rawQuery(
'SELECT * FROM $tableQuestions WHERE $columnQuestionPollId = "$poll_id"');
print(questions);
for (var q in questions) {
print(resultsOptionsList);
print('here here!');
print(q['question_id']);
var answers = await dbClient.rawQuery(
'SELECT * FROM $tableOptions WHERE $columnOptionPollId = "$poll_id" AND $columnOptionQuestionId = "${q['question_id']}"');
print(answers);
resultsOptionsList.clear();
for (var o in answers) {
print(resultsOptionsList);
resultsOptionsList.add(ResultsOption.fromJson(o));
}
print(resultsOptionsList);
ResultsQuestion ques = new ResultsQuestion(
required: /*(q['required']).toLowerCase() == 'true'*/ true,
icon: 'icon',
title: q[columnQTitle],
description: q[columnQDescription],
link: q[columnLink],
type: q[columnType],
maxChoice: q[columnMaxChoice],
options: resultsOptionsList,
id: q[columnQId]);
/*ResultsQuestion ques = ResultsQuestion.fromJson(q);
ques.options = resultsOptionsList;
ques.required = true;*/
resultsList.add(ques);
print(resultsList[0].options.length);
}
return true;
}
一切正常。但是问题是,例如,现在我有两个问题..问题1的选择是:
扑:[{option_id:5c2c9a8d108d3d0453149485,文本:نعم,answerCount:5,poll_option_id:5c2c9a8d108d3d045314948a,option_question_id:5c2c9a8d108d3d0453149483},{option_id:5c2c9a8d108d3d0453149484,文本:لا,answerCount:10,poll_option_id:5c2c9a8d108d3d045314948a,option_question_id:5c2c9a8d108d3d0453149483}]
和问题2选项是:
扑:[{option_id:5c2c9a8d108d3d0453149489,文本:نعم,answerCount:5,poll_option_id:5c2c9a8d108d3d045314948a,option_question_id:5c2c9a8d108d3d0453149486},{option_id:5c2c9a8d108d3d0453149488,文本:لا,answerCount:3,poll_option_id:5c2c9a8d108d3d045314948a,option_question_id:5c2c9a8d108d3d0453149486}, {option_id:5c2c9a8d108d3d0453149487,文本:ربما,answerCount:7,poll_option_id:5c2c9a8d108d3d045314948a,option_question_id:5c2c9a8d108d3d0453149486}]
问题在于它总是保存所有问题中的最后一个选项列表!
例如当我尝试打印时:
print(resultsList[0].options.length);
我应该得到2 ..但我得到3,这是
print(resultsList[1].options.length);
该如何解决?以及我缺少或做错了什么?
答案 0 :(得分:0)
我自己发现了问题..我只是将resultsOptionsList的声明移到了for循环之前..
List<ResultsOption> resultsOptionsList = <ResultsOption>[];
for (var o in answers) {
//print(resultsOptionsList);
resultsOptionsList.add(ResultsOption.fromJson(o));
}
解决了:)!
希望将来能对某人有所帮助。