Skip to content
Snippets Groups Projects
Select Git revision
  • 215ce8de726341922cfd498628576b716ab5dd4d
  • 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

abstract_game.dart

Blame
  • letters.dart 3.14 KiB
    import 'package:flutter/material.dart';
    import 'package:provider/provider.dart';
    
    import '../provider/data.dart';
    import '../utils/constants.dart';
    import '../widgets/dialog_gameover.dart';
    
    class LetterButtons extends StatelessWidget {
      const LetterButtons({super.key});
    
      @override
      Widget build(BuildContext context) {
        final Orientation orientation = MediaQuery.of(context).orientation;
        var size = MediaQuery.of(context).size;
        final double paddingTop = MediaQuery.of(context).padding.top;
        final double itemHeight = (size.height - paddingTop) / 2;
        final double itemWidth = size.width / 2;
    
        final Data myProvider = Provider.of<Data>(context);
    
        final List<String> lettersList = letters.split('');
        final List<Widget> keys = [];
    
        for (var key in lettersList) {
          keys.add(
            Padding(
              padding: const EdgeInsets.all(2.0),
              child: TextButton(
                style: TextButton.styleFrom(
                  backgroundColor: Colors.grey,
                  foregroundColor: Colors.white,
                  shadowColor: const Color(accent),
                ),
                onPressed: myProvider.usedLetters.contains(key)
                    ? null
                    : () async {
                        myProvider.updateUsedLetters(key);
                        if (myProvider.secretWord.contains(key)) {
                          for (int index = 0; index < myProvider.secretWord.length; index++) {
                            if (key == myProvider.secretWord[index]) {
                              myProvider.updateHiddenWord(index, key);
                            }
                          }
    
                          if (myProvider.hiddenWord == myProvider.secretWord) {
                            myProvider.addVictory();
                            showDialog(
                              context: context,
                              builder: (context) => const DialogGameOver(victory),
                            );
                          }
                        } else {
                          myProvider.addError();
                          if (myProvider.errors == 8) {
                            await Future.delayed(const Duration(milliseconds: 900)); //????
                            myProvider.addDefeat();
                            showDialog(
                              context: context,
                              builder: (context) => const DialogGameOver(defeat),
                            );
                          }
                        }
                      },
                child: Text(
                  key,
                  textAlign: TextAlign.center,
                ),
              ),
            ),
          );