Select Git revision
default_global_settings.dart
-
Benoît Harrault authoredBenoît Harrault authored
game_pick_word.dart 4.66 KiB
import 'package:flutter/material.dart';
import 'package:wordguessing/models/word.dart';
import 'package:wordguessing/provider/data.dart';
import 'package:wordguessing/ui/games/abstract_game.dart';
import 'package:wordguessing/utils/random_pick_words.dart';
class GamePickWordPage extends GameAbstract {
const GamePickWordPage({super.key});
@override
Future<void> pickData(Data myProvider) async {
final RandomPickWords randomPickWords = RandomPickWords();
Word word;
int attempts = 0;
do {
await randomPickWords.init(myProvider.lang, countWords);
final List<Word> words = randomPickWords.words;
word = words.take(1).toList()[0];
if ((words.length >= countWords) && !myProvider.isRecentlyPicked(word.key)) {
myProvider.updateWord(word);
myProvider.updateOtherWords(words.skip(1).toList());
myProvider.updateImages([word]);
}
attempts++;
} while (myProvider.word != word && attempts < 10);
}
Widget buildImageContainer(String image) {
const double imageSize = 130;
String imageAsset = 'assets/placeholder.png';
if (image != '') {
imageAsset = 'assets/images/$image';
}
return Container(
margin: const EdgeInsets.all(2),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
border: Border.all(
color: Colors.blue.shade200,
width: 8,
),
),
child: Image(
image: AssetImage(imageAsset),
width: imageSize,
height: imageSize,
fit: BoxFit.fill,
),
);
}
Widget buildImageItemsBlock(Word? currentWord) {
return Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
buildImageContainer(currentWord?.images[0] ?? ''),
buildImageContainer(currentWord?.images[1] ?? ''),