Skip to content
Snippets Groups Projects
Select Git revision
  • c7aa4bfc7a6c88bb3c2035da56614feee2981331
  • master default protected
  • 94-upgrade-framework-and-dependencies
  • 77-improve-app-metadata
  • 68-add-words
  • 62-fix-get-image-when-word-with-accent
  • 44-implement-game-write-word-from-letters
  • 43-add-script-to-get-images-from-assets
  • 32-add-accents-and-diacritics-in-french-words-2
  • Release_0.10.0_80 protected
  • Release_0.9.2_79 protected
  • Release_0.9.1_78 protected
  • Release_0.9.0_77 protected
  • Release_0.8.0_76 protected
  • Release_0.7.0_75 protected
  • Release_0.6.0_74 protected
  • Release_0.5.2_73 protected
  • Release_0.5.1_72 protected
  • Release_0.5.0_71 protected
  • Release_0.4.1_70 protected
  • Release_0.4.0_69 protected
  • Release_0.3.1_68 protected
  • Release_0.3.0_67 protected
  • Release_0.2.1_66 protected
  • Release_0.2.0_65 protected
  • Release_0.1.40_64 protected
  • Release_0.1.39_63 protected
  • Release_0.1.38_62 protected
  • Release_0.1.37_61 protected
29 results

game_pick_word.dart

Blame
  • game_pick_word.dart 9.08 KiB
    import 'package:flutter/material.dart';
    import 'package:provider/provider.dart';
    
    import '../provider/data.dart';
    import '../utils/random_pick_word.dart';
    import '../utils/random_pick_image.dart';
    
    class GamePickWordPage extends StatelessWidget {
      int _count = 4;
    
      Future<void> startGame(Data myProvider, String lang) async {
        await resetGame(myProvider);
        myProvider.updateLang = lang;
        await nextWord(myProvider);
      }
    
      Future<void> resetGame(Data myProvider) async {
        myProvider.updateLang = '';
        myProvider.updateQuestionsCount = 0;
        myProvider.updateGoodAnswers = 0;
        myProvider.updateWrongAnswers = 0;
        myProvider.updateWord = null;
        myProvider.updateImages = null;
      }
    
      Future<void> nextWord(Data myProvider) async {
        await pickData(myProvider);
        myProvider.updateQuestionsCount = myProvider.questionsCount + 1;
      }
    
      Future<void> pickData(Data myProvider) async {
        List words;
        List images;
        RandomPickWord randomPickWord;
        RandomPickImage randomPickImage;
        Map word;
    
        int attempts = 0;
        do {
          randomPickWord = RandomPickWord();
          await randomPickWord.init(myProvider.lang, _count);
    
          if (randomPickWord.words != null) {
            words = randomPickWord.words;
            word = words.take(1).toList()[0];
            randomPickImage = RandomPickImage();
            await randomPickImage.init(word['key'], _count);
            if (randomPickImage.images != null) {
              images = randomPickImage.images;
              break;
            }
          }
          attempts++;
        } while (attempts < 3);
    
        if (
          ((words != null) && (words.length == _count))
          &&
          ((images != null) && (images.length == _count))
        ) {
          myProvider.updateWord = word;
          myProvider.updateOtherWords = words.skip(1).toList();
          myProvider.updateImages = images;
        }
      }
    
      Future<void> checkWord(Data myProvider, word) async {
        if (myProvider.word['key'] == word['key']) {
          myProvider.updateGoodAnswers = myProvider.goodAnswers + 1;
          nextWord(myProvider);