generateWordPairs function
Iterable<WordPair>
generateWordPairs({
- TypeOfPair typeOfPair = TypeOfPair.randomPair,
- Random? random,
Implementation
Iterable<WordPair> generateWordPairs(
{TypeOfPair typeOfPair = TypeOfPair.randomPair, Random? random}) sync* {
final rand = random ?? _random;
String pickRandom(List<String> list) => list[rand.nextInt(list.length)];
// We're in a sync* function, so `while (true)` is okay.
// ignore: literal_only_boolean_expressions
while (true) {
String firstWord;
String secondWord;
switch (typeOfPair) {
case TypeOfPair.adjectiveAdjective:
firstWord = pickRandom(adjectives);
secondWord = pickRandom(adjectives);
break;
case TypeOfPair.nounNoun:
firstWord = pickRandom(nouns);
secondWord = pickRandom(nouns);
break;
case TypeOfPair.verbVerb:
firstWord = pickRandom(verbs);
secondWord = pickRandom(verbs);
break;
case TypeOfPair.adjectiveNoun:
firstWord = pickRandom(adjectives);
secondWord = pickRandom(nouns);
break;
case TypeOfPair.verbAdjective:
firstWord = pickRandom(verbs);
secondWord = pickRandom(adjectives);
break;
case TypeOfPair.verbNoun:
firstWord = pickRandom(verbs);
secondWord = pickRandom(nouns);
break;
case TypeOfPair.randomPair:
firstWord = pickRandom(allWords);
secondWord = pickRandom(allWords);
break;
}
final WordPair wordPair = WordPair(firstWord, secondWord);
yield wordPair;
}
}