首页 > 解决方案 > pageview.builder ,当我点击选项时没有错误但页面没有改变

问题描述

我的问题页面没有跳转到下一个索引,动画播放但是当我单击选项按钮动画时不会停止可能是问题动画但是当动画时间满时得到一个错误位置 isnotEmpty 我该如何解决这个问题我让应用程序的所有部分都离开了这个页面,如果有人知道你能帮助我,我没有找到任何解决方案

              physics: NeverScrollableScrollPhysics(),
              controller: _controller.pageController,
              itemCount: snapshot.data.docs.length,
              onPageChanged: _controller.updateTheQnNum,
              itemBuilder: (context,index){
                return GetxPlayCard(
                  index: index,
                  questionModel: getQuestionModelFromDataSnapshot(snapshot.data.docs[index]),
                );
              },
            );


                GestureDetector(
                onTap: () async{
                  if (!widget.questionModel.answered) {
                    if (widget.questionModel.option1 ==
                        widget.questionModel.correctOption) {
                      optionSelected = widget.questionModel.option1;
                      widget.questionModel.answered = true;
                      _correct = _correct + 1;
                      _notAttempted = _notAttempted - 1;
                      setState(() {});
                      Future.delayed(Duration(seconds: 3), () {
                       return  _controller.nextQuestion;
                      });
                    } else {
                      optionSelected = widget.questionModel.option1;
                      widget.questionModel.answered = true;
                      _incorrect = _incorrect + 1;
                      setState(() {});
                      Future.delayed(Duration(seconds: 3), () {
                       return  _controller.nextQuestion;
                      });
                    }
                  }
                },
                child: GetxOption(
                  corrextAnswer: widget.questionModel.correctOption,
                  description: widget.questionModel.option1,
                  option: 'A',
                  optionSelected: optionSelected,
                ),
              ),

class ControllerQuestion extends GetxController
    with SingleGetTickerProviderMixin {
  AnimationController animationController;
  Animation animation;

  Animation get animationn => this.animation;

  PageController pageController;

  int total = 0;
  int _correct = 0;
  int _incorrect = 0;
  int _notAttempted = 0;
  String optionSelected = "";

  RxInt _questionNumber = 1.obs;
  RxInt get questionNumber => this._questionNumber;

  @override
  void onInit() {
    animationController =
        AnimationController(duration: Duration(seconds: 60), vsync: this);
    animation = Tween<double>(begin: 0, end: 1).animate(animationController)
      ..addListener(() {
        // update like setState
        update();
      });

    animationController.forward().then((_) {
      nextQuestion;
    });
    pageController = PageController();
    super.onInit();
  }

  @override
  void onClose() {
    super.onClose();
    animationController.dispose();
    pageController.dispose();
  }

  QuestionModel questionModel;

  BuildContext context;
  int index;

  Future<void> nextQuestion(questionnumber, indexx) async {
    if (questionnumber != indexx) {
      pageController.nextPage(
          duration: Duration(milliseconds: 200), curve: Curves.elasticIn);
      update();

      animationController.reset();
      animationController.forward().then((_) {
        nextQuestion(questionnumber, indexx);
      });
      update();
    } else {
      Navigator.pushReplacement(
          context,
          MaterialPageRoute(
              builder: (context) => Resultst(
                  total: total, correct: _correct, incorrect: _incorrect)));
    }
  }

  void updateTheQnNum(int index) {
    _questionNumber.value = index + 1;
    update();
  }
}

标签: flutterflutter-pageviewanimationcontroller

解决方案


推荐阅读