Flutter : how to show next index after complete a specific logic in Swiper, where GridView also set in Swiper?

前端 未结 1 1018
清酒与你
清酒与你 2021-01-23 18:31

I\'m trying to make a word game. First of all, the index will be white. if user Click the correct answer then index will be to green color and go to next screen, also index will

相关标签:
1条回答
  • 2021-01-23 19:14

    so first thing you should do is changing your onTap function in your gesture detector into a simpler code You shouldn't verify every single number for the index because the index is already that number

    To be more clear when you call list[index] the index here is an integer so if the index==1 you're calling list[1] and if the index==5 you're calling list[5] you don't have to test if index==1 or something like that

    so your code should be something like this

     onTap: () async{
           if (gameButtonList[index] == oneValueRandomGet){
              _answer = true;
              colorList[index] = Colors.green;
              inLastPage = false;
              setState((){});
              
              _showCorrectAndIncorrectDialog("Congratulation", "asset/icon_images/ok_emoji.png", "Correct answer", Colors.green);
              }else{
              colorList[index] = Colors.red;
              inLastPage = true;
              setState((){});
              }
            },
    

    And next for the problem of testing if the answer is correct or not and color changing and going to next screen

    First thing please move these lines in your item builder function into a function you can call from anywhere like this for example

    void newQuestion(){
    gameButtonList.clear();
    var fourValueRandom = new Random();
    for (var i = 0; i < 4; i++) {
    final fourGameBtnRandom =     word_data.drink[fourValueRandom.nextInt(word_data.drink.length)];
    gameButtonList.add(fourGameBtnRandom);
    }
    oneValueRandomGet = gameButtonList[fourValueRandom.nextInt(gameButtonList.length)];
    wordDataReplace = oneValueRandomGet.replaceAll(" ", "_").toLowerCase();
    }
    

    and you can call this question after calling your dialogAlert if you change the line when you call _showCorrectAndIncorrectDialog(...) into

    _showCorrectAndIncorrectDialog("Congratulation", "asset/icon_images/ok_emoji.png", "Correct answer", Colors.green);
    newQuestion() //**Add this line also**
    

    Notes :

    -Remember to declare the variables you need in your class so they get changed in newQuestion function

    -First time you lunch the app the variables like " oneValueRandomGet " are gonna be null so you can't show any data, call oneQuestion() in your initState so that when launching the app you get your first question ready directly.

    I hope all this doesn't confuse you I tried my best to simplify and give you the simplest edit and answer possible, please if you're still unable to fix your problem I would really advice you to try to rewrite your code and try to make it as simple as possible.

    Thank you.

    0 讨论(0)
提交回复
热议问题