Я создаю приложение для викторины. В приложении у меня есть символы (смайлики), которые по умолчанию являются синей точкой (хранится в списке смайликов []).
Если пользователь отвечает правильно, эмодзи становится зеленым, а при неправильном ответе - красным.
Чтобы проверить это, я сделал очень простое приложение, и все заработало как надо. Но теперь, когда я пытаюсь реализовать его в своем приложении для викторин, меняются только первые смайлики. После нажатия кнопки «NEXT» список начинается заново.
Мне кажется, я пробовал миллионы разных вещей, но я все еще не могу заставить его работать.
Этот код работает:
submitPressed(int index) {
if (userAnswer == sum.toString()) {
setState(() {
correction = sum.toString();
emojis[index] = '✔';
});
} else {
setState(() {
correction = sum.toString();
emojis[index] = '❌';
});
}
}
Widget buildContainer(BuildContext context, int index) {
return Container(
child: Padding(
padding: const EdgeInsets.only(top: 10.0),
child: Text(
emojis[index],
)),
);
}
RaisedButton(
child: Text('Submit'),
onPressed: () {
setState(() {
submitPressed(_counter);
});
},
),
Пока это не так:
final List<String> figures = [
'?',
'?',
'?',
'?',
'?',
'?',
'?',
'?',
'?',
'?',
];
Widget buildContainer(BuildContext context, int index) {
return Container(
child: Padding(
padding: const EdgeInsets.only(top: 10.0),
child: Text(
emojis[index],
style: TextStyle(fontSize: 17),
),
));
}
buttonPressed(String buttonText, int index) {
if (buttonText == "<-") {
if (!_isQuestionResponded) {
_changeUserTypedText("");
_changeAnswerValidationText("");
}
} else if (buttonText == 'OK') {
if (userAnswer.isNotEmpty) {
_isQuestionResponded = true;
if (userAnswer == widget.sum.toString()) {
setState(() {
correction = widget.sum.toString();
correctionColor = correct;
emojis[index] = '✔';
});
} else {
setState(() {
correction = widget.sum.toString();
correctionColor = incorrect;
emojis[index] = '❌';
});
}
}
} else if (buttonText == 'NEXT') {
if (correction == widget.sum.toString()) {
widget.newTask(widget.buttonName);
counterService.increment();
setState(() {
});
} else if (correction == widget.sum.toString()) {
widget.newTask(widget.buttonName);
}
} else {
if (correction.isEmpty) {
userAnswer = userAnswer + buttonText;
}
}
setState(() {
userAnswer = userAnswer;
});
}
void _changeUserTypedText(String text) {
setState(() => userAnswer = text);
}
void _changeAnswerValidationText(String text) {
setState(() => _answerValidationOutput = text);
}
Когда я пытаюсь реализовать «submitPressed», кнопка «NEXT» блокируется.
Любая помощь здесь будет потрясающей. Спасибо.