Flutter List продолжает перезагружаться вместо +1 - PullRequest
0 голосов
/ 16 мая 2019

Я создаю приложение для викторины. В приложении у меня есть символы (смайлики), которые по умолчанию являются синей точкой (хранится в списке смайликов []). Если пользователь отвечает правильно, эмодзи становится зеленым, а при неправильном ответе - красным.

Чтобы проверить это, я сделал очень простое приложение, и все заработало как надо. Но теперь, когда я пытаюсь реализовать его в своем приложении для викторин, меняются только первые смайлики. После нажатия кнопки «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» блокируется.

Любая помощь здесь будет потрясающей. Спасибо.

...