Skip to content
Snippets Groups Projects
Select Git revision
  • 62756e34083d60c42554b463cd51966ce570ce75
  • master default protected
  • 101-upgrade-framework-and-dependencies
  • 84-improve-app-metadata
  • 82-fix-colors
  • 23-add-timer
  • 65-update-icons
  • Release_0.10.0_87 protected
  • Release_0.9.2_86 protected
  • Release_0.9.1_85 protected
  • Release_0.9.0_84 protected
  • Release_0.8.0_83 protected
  • Release_0.7.0_82 protected
  • Release_0.6.0_81 protected
  • Release_0.5.2_80 protected
  • Release_0.5.1_79 protected
  • Release_0.5.0_78 protected
  • Release_0.4.1_77 protected
  • Release_0.4.0_76 protected
  • Release_0.3.1_75 protected
  • Release_0.3.0_74 protected
  • Release_0.2.1_73 protected
  • Release_0.2.0_72 protected
  • Release_0.1.22_71 protected
  • Release_0.1.21_70 protected
  • Release_0.1.20_69 protected
  • Release_0.1.19_68 protected
27 results

IDEWorkspaceChecks.plist

Blame
  • random_pick_word.dart 2.36 KiB
    import 'dart:async';
    import 'dart:convert';
    import "dart:math";
    
    import 'package:flutter/services.dart';
    
    class RandomPickWord {
      static Set<String> wordList = <String>{};
      static Set<String> dictionary = <String>{};
    
      static String _lang = '';
      static int _length = 5;
      static String _level = '';
    
      RandomPickWord();
    
      String _word = '';
      String get word => _word;
    
      init(String lang, int length, String level) async {
        if (lang != _lang ||
            length != _length ||
            level != _level ||
            wordList.isEmpty ||
            dictionary.isEmpty) {
          _lang = lang;
          _length = length;
          _level = level;
    
          dictionary.clear();
          wordList.clear();
    
          String wordBaseFilename = 'words-' + length.toString() + '-' + lang;
    
          // Get full dictionary (eligible words)
          print('Reload dictionary (' + lang + ' / ' + length.toString() + ')');
          try {
            String wordsFile = wordBaseFilename + '-' + 'dictionary';
            var data = await rootBundle.loadString('assets/files/' + wordsFile + '.txt');
            LineSplitter.split(data).forEach((line) {
              if (line.length == length) {
                dictionary.add(line.toUpperCase());
              }
            });
          } catch (e) {
            throw "Failed loading dictionary database";
          }
    
          // Get guessable words list (will pick random word from)
          print('Reload words list (' + lang + ' / ' + length.toString() + ' / ' + level + ')');
          try {
            String wordsFile = wordBaseFilename + '-' + level;
            var data = await rootBundle.loadString('assets/files/' + wordsFile + '.txt');
            LineSplitter.split(data).forEach((line) {
              if (line.length == length) {
                wordList.add(line.toUpperCase());
              }
            });
          } catch (e) {
            throw "Failed loading words database";
          }
        }
    
        print('Words in dictionary: ' + dictionary.length.toString());
        print('Words in words list: ' + wordList.length.toString());
    
        _word = '';
        await wordFromLocalFile();
      }
    
      Future<void> wordFromLocalFile() async {
        // Check we have enough words
        if (wordList.length < 1) {
          print('Not enough words in list.');
          _word = '';
        } else {
          final _random = new Random();
          _word = wordList.elementAt(_random.nextInt(wordList.length));
        }
      }
    
      static bool checkWordExists(String word) {
        return dictionary.contains(word);
      }
    }