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

home.dart

Blame
  • home.dart 4.52 KiB
    import 'package:flutter/material.dart';
    import 'package:provider/provider.dart';
    import 'package:badges/badges.dart';
    import 'package:overlay_support/overlay_support.dart';
    
    import '../layout/game.dart';
    import '../layout/parameters.dart';
    import '../provider/data.dart';
    import '../utils/game_utils.dart';
    
    class Home extends StatefulWidget {
      static const String id = 'home';
    
      @override
      _HomeState createState() => _HomeState();
    }
    
    class _HomeState extends State<Home> {
      @override
      void initState() {
        super.initState();
    
        Data myProvider = Provider.of<Data>(context, listen: false);
        myProvider.initParametersValues();
      }
    
      List getImagesAssets(Data myProvider) {
        List assets = [];
    
        List gameImages = [
          'button_back',
          'button_help',
          'button_show_conflicts',
          'button_start',
          'game_win',
        ];
        myProvider.availableDifficultyLevels.forEach(
          (difficulty) => gameImages.add('difficulty_' + difficulty)
        );
        myProvider.availableSizes.forEach(
          (size) => gameImages.add('size_' + size)
        );
    
        gameImages.forEach(
          (image) => assets.add('assets/icons/' + image + '.png')
        );
    
        List skinImages = [];
        for (int value = 1; value <= 16; value++) {
          skinImages.add(value.toString());
        }
    
        myProvider.availableSkins.forEach(
          (skin) => skinImages.forEach(
            (image) => assets.add('assets/skins/' + skin + '_' + image + '.png')
          )
        );
    
        assets.add('assets/skins/empty.png');
    
        return assets;
      }
    
      @override
      Widget build(BuildContext context) {
        Data myProvider = Provider.of<Data>(context);
    
        if (!myProvider.assetsPreloaded) {
          List assets = getImagesAssets(myProvider);
          assets.forEach(
            (asset) => precacheImage(AssetImage(asset), context)
          );
          myProvider.updateAssetsPreloaded(true);
        }
    
        List<Widget> menuActions = [];
    
        if (myProvider.gameIsRunning) {
          menuActions = [
            FlatButton(
              child: Container(
                decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(4),
                  border: Border.all(
                    color: Colors.blue,
                    width: 4,
                  ),
                ),
                margin: EdgeInsets.all(8),
                child: Image(
                  image: AssetImage('assets/icons/button_back.png'),
                  fit: BoxFit.fill
                ),
              ),
              onPressed: () => toast('Long press to quit game...'),
              onLongPress: () => GameUtils.resetGame(myProvider),
            ),
            Spacer(flex: 6),
            FlatButton(
              child: Container(
                decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(4),
                  border: Border.all(
                    color: Colors.blue,
                    width: 4,
                  ),
                ),
                margin: EdgeInsets.all(8),
                child: Badge(
                  showBadge: myProvider.givenTipsCount == 0 ? false : true,
                  badgeColor:
                    myProvider.givenTipsCount < 10
                      ? Colors.green
                      : myProvider.givenTipsCount < 20
                        ? Colors.orange
                        : Colors.red,
                  badgeContent: Text(
                    myProvider.givenTipsCount == 0 ? '' : myProvider.givenTipsCount.toString(),
                    style: TextStyle(
                      color: Colors.white
                    )
                  ),
                  child: Image(
                    image: AssetImage('assets/icons/button_help.png'),
                    fit: BoxFit.fill
                  ),
                )
              ),
              onPressed: () => GameUtils.showTip(myProvider),
            ),
            Spacer(),
            FlatButton(
              child: Container(
                decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(4),
                  border: Border.all(
                    color: myProvider.showConflicts ? Colors.white : Colors.blue,
                    width: 4,
                  ),
                ),
                margin: EdgeInsets.all(8),
                child: Image(
                  image: AssetImage('assets/icons/button_show_conflicts.png'),
                  fit: BoxFit.fill
                ),
              ),
              onPressed: () {
                myProvider.toggleShowConflicts();
              },
            ),
          ];
        }
    
        return Scaffold(
          appBar: AppBar(
            actions: menuActions,
          ),
          body: SafeArea(
            child: Center(
              child: myProvider.gameIsRunning
                ? Game.buildGameWidget(myProvider)
                : Parameters.buildParametersSelector(myProvider)
            ),
          )
        );
      }
    }