Skip to content
Snippets Groups Projects
Select Git revision
  • 5c5a46fafa31ffd31a6a63ad66eb2a0ec1e7846e
  • master default protected
  • 21-add-onlongpress-with-popup-on-parameters
  • 23-center-vertically-buttons
  • 30-highlight-bin-when-selecting-disabled-item
  • 1.0.7 protected
  • 1.0.6 protected
  • 1.0.5 protected
  • 1.0.4 protected
  • 1.0.3 protected
  • 1.0.2 protected
  • 1.0.0 protected
  • 0.9.1 protected
  • 0.9.0 protected
  • 0.8.4 protected
  • 0.8.3 protected
  • 0.8.2 protected
  • 0.8.1 protected
  • 0.8.0 protected
  • 0.7.0 protected
  • 0.6.1 protected
  • 0.6.0 protected
  • 0.5.0 protected
  • 0.4.0 protected
  • 0.3.0 protected
25 results

settings_activity_state.dart

Blame
  • game_board.dart 5.19 KiB
    import 'package:flutter/material.dart';
    import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
    
    import 'package:random/cubit/activity/activity_cubit.dart';
    import 'package:random/models/activity/activity.dart';
    import 'package:random/models/settings/settings_activity.dart';
    import 'package:random/ui/painters/cell_painter.dart';
    import 'package:random/ui/widgets/game/game_score.dart';
    
    class GameBoardWidget extends StatefulWidget {
      const GameBoardWidget({
        super.key,
        required this.activity,
        required this.widgetSize,
      });
    
      final Activity activity;
      final Size widgetSize;
    
      @override
      State<GameBoardWidget> createState() => _GameBoardWidget();
    }
    
    class _GameBoardWidget extends State<GameBoardWidget> with TickerProviderStateMixin {
      List<List<Animation<double>?>> animations = [];
    
      void resetAnimations(ActivitySettings activitySettings) {
        final int boardSize = activitySettings.boardSizeValue;
    
        animations = List.generate(
          boardSize,
          (i) => List.generate(
            boardSize,
            (i) => null,
          ),
        );
      }
    
      void removeCell(BuildContext context, int x, int y) {
        final ActivityCubit activityCubit = BlocProvider.of<ActivityCubit>(context);
        final Activity updatedGame = activityCubit.state.currentActivity;
    
        // "remove" cell, update counters
        updatedGame.increaseScore(updatedGame.getCellValue(x, y));
        updatedGame.increaseMovesCount();
        updatedGame.updateCellValue(x, y, null);
        setState(() {});
    
        // "move down" cells
        final controller = AnimationController(
          vsync: this,
          duration: const Duration(milliseconds: 750),
        )..addListener(() {
            if (mounted) {
              setState(() {});
            }
          });
    
        if (mounted) {
          setState(() {});
        }
    
        Animation<double> animation = Tween(
          begin: 0.0,
          end: 1.0,
        ).animate(CurvedAnimation(
          curve: Curves.bounceOut,
          parent: controller,
        ))
          ..addStatusListener((status) {