Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 101-add-shader-test-page
  • 65-improve-app-metadata
  • master
  • Release_1.0.10_11
  • Release_1.0.11_12
  • Release_1.0.12_13
  • Release_1.0.13_14
  • Release_1.0.14_15
  • Release_1.0.15_16
  • Release_1.0.16_17
  • Release_1.0.17_18
  • Release_1.0.18_19
  • Release_1.0.19_20
  • Release_1.0.20_21
  • Release_1.0.21_22
  • Release_1.0.22_23
  • Release_1.0.23_24
  • Release_1.0.24_25
  • Release_1.0.25_26
  • Release_1.0.26_27
  • Release_1.0.27_28
  • Release_1.0.28_29
  • Release_1.0.29_30
  • Release_1.0.30_31
  • Release_1.0.31_32
  • Release_1.0.32_33
  • Release_1.0.33_34
  • Release_1.0.34_35
  • Release_1.0.35_36
  • Release_1.0.36_37
  • Release_1.0.37_38
  • Release_1.0.38_39
  • Release_1.0.39_40
  • Release_1.0.3_4
  • Release_1.0.40_41
  • Release_1.0.41_42
  • Release_1.0.42_43
  • Release_1.0.43_44
  • Release_1.0.44_45
  • Release_1.0.45_46
  • Release_1.0.46_47
  • Release_1.0.47_48
  • Release_1.0.48_49
  • Release_1.0.49_50
  • Release_1.0.4_5
  • Release_1.0.50_51
  • Release_1.0.51_52
  • Release_1.0.52_53
  • Release_1.0.53_54
  • Release_1.0.54_55
  • Release_1.0.55_56
  • Release_1.0.56_57
  • Release_1.0.57_58
  • Release_1.0.58_59
  • Release_1.0.59_60
  • Release_1.0.5_6
  • Release_1.0.60_61
  • Release_1.0.61_62
  • Release_1.0.62_63
  • Release_1.0.63_64
  • Release_1.0.6_7
  • Release_1.0.7_8
  • Release_1.0.8_9
  • Release_1.0.9_10
  • Release_1.1.0_65
  • Release_1.1.1_66
  • Release_1.1.2_67
  • Release_1.1.3_68
  • Release_1.2.0_69
  • Release_1.2.1_70
  • Release_1.3.0_71
  • Release_1.3.1_72
  • Release_1.3.2_73
  • Release_1.4.0_74
  • Release_1.5.0_75
  • Release_1.6.0_76
  • Release_1.7.0_77
  • Release_1.7.1_78
  • Release_1.7.2_79
  • Release_1.8.0_80
  • Release_1.8.1_81
  • Release_1.8.2_82
  • Release_3_1.0.2
  • Release_Release_3_1.0.2
84 results

Target

Select target project
No results found
Select Git revision
  • 101-add-shader-test-page
  • 65-improve-app-metadata
  • master
  • Release_1.0.10_11
  • Release_1.0.11_12
  • Release_1.0.12_13
  • Release_1.0.13_14
  • Release_1.0.14_15
  • Release_1.0.15_16
  • Release_1.0.16_17
  • Release_1.0.17_18
  • Release_1.0.18_19
  • Release_1.0.19_20
  • Release_1.0.20_21
  • Release_1.0.21_22
  • Release_1.0.22_23
  • Release_1.0.23_24
  • Release_1.0.24_25
  • Release_1.0.25_26
  • Release_1.0.26_27
  • Release_1.0.27_28
  • Release_1.0.28_29
  • Release_1.0.29_30
  • Release_1.0.30_31
  • Release_1.0.31_32
  • Release_1.0.32_33
  • Release_1.0.33_34
  • Release_1.0.34_35
  • Release_1.0.35_36
  • Release_1.0.36_37
  • Release_1.0.37_38
  • Release_1.0.38_39
  • Release_1.0.39_40
  • Release_1.0.3_4
  • Release_1.0.40_41
  • Release_1.0.41_42
  • Release_1.0.42_43
  • Release_1.0.43_44
  • Release_1.0.44_45
  • Release_1.0.45_46
  • Release_1.0.46_47
  • Release_1.0.47_48
  • Release_1.0.48_49
  • Release_1.0.49_50
  • Release_1.0.4_5
  • Release_1.0.50_51
  • Release_1.0.51_52
  • Release_1.0.52_53
  • Release_1.0.53_54
  • Release_1.0.54_55
  • Release_1.0.55_56
  • Release_1.0.56_57
  • Release_1.0.57_58
  • Release_1.0.58_59
  • Release_1.0.59_60
  • Release_1.0.5_6
  • Release_1.0.60_61
  • Release_1.0.61_62
  • Release_1.0.62_63
  • Release_1.0.63_64
  • Release_1.0.6_7
  • Release_1.0.7_8
  • Release_1.0.8_9
  • Release_1.0.9_10
  • Release_1.1.0_65
  • Release_1.1.1_66
  • Release_1.1.2_67
  • Release_1.1.3_68
  • Release_1.2.0_69
  • Release_1.2.1_70
  • Release_1.3.0_71
  • Release_1.3.1_72
  • Release_1.3.2_73
  • Release_1.4.0_74
  • Release_1.5.0_75
  • Release_1.6.0_76
  • Release_1.7.0_77
  • Release_1.7.1_78
  • Release_1.7.2_79
  • Release_1.8.0_80
  • Release_1.8.1_81
  • Release_1.8.2_82
  • Release_3_1.0.2
  • Release_Release_3_1.0.2
84 results
Show changes

Commits on Source 2

7 files
+ 109
39
Compare changes
  • Side-by-side
  • Inline

Files

Original line number Diff line number Diff line
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
app.versionName=1.0.38
app.versionCode=39
app.versionName=1.0.39
app.versionCode=40
Original line number Diff line number Diff line
@@ -8,12 +8,12 @@ part 'game_state.dart';
class GameCubit extends HydratedCubit<GameState> {
  GameCubit() : super(const GameState());

  void getData(GameState state) {
    emit(state);
  void getData(GameState gameState) {
    emit(gameState);
  }

  void updateGameState(GameData game) {
    emit(GameState(game: game));
  void updateGameState(GameData gameData) {
    emit(GameState(game: gameData));
  }

  @override
Original line number Diff line number Diff line
import 'dart:ui' as ui;

import 'package:flutter/material.dart';

import 'package:random/config/app_colors.dart';
import 'package:random/utils/color_extensions.dart';

class CellPainter extends CustomPainter {
  const CellPainter({required this.value});
@@ -24,12 +27,33 @@ class CellPainter extends CustomPainter {

  @override
  void paint(Canvas canvas, Size size) {
    final paintBackground = Paint();
    paintBackground.color = getIndexedColor(value);
    paintBackground.style = PaintingStyle.fill;
    final baseColor = getIndexedColor(value);

    const borderWidth = 0.05;

    final Rect baseSquare = Rect.fromPoints(Offset(0, 0), Offset(size.width, size.height));

    final paintBaseSquare = Paint()
      ..style = PaintingStyle.fill
      ..color = baseColor.darken(40);

    canvas.drawRect(baseSquare, paintBaseSquare);

    final Rect innerGradientBackground = Rect.fromPoints(
        Offset(size.width * borderWidth, size.height * borderWidth),
        Offset(size.width * (1 - borderWidth), size.height * (1 - borderWidth)));

    final paintInnerBackground = Paint()
      ..shader = ui.Gradient.linear(
        baseSquare.topCenter,
        baseSquare.bottomCenter,
        [
          baseColor.lighten(10),
          baseColor.darken(20),
        ],
      );

    final Rect rectBackground = Rect.fromPoints(Offset(0, 0), Offset(size.width, size.height));
    canvas.drawRect(rectBackground, paintBackground);
    canvas.drawRect(innerGradientBackground, paintInnerBackground);
  }

  @override
Original line number Diff line number Diff line
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:unicons/unicons.dart';

import 'package:random/cubit/game_cubit.dart';
import 'package:random/models/game_data.dart';

import 'package:random/ui/widgets/game_board.dart';
import 'package:unicons/unicons.dart';

class GamePage extends StatefulWidget {
  const GamePage({super.key});
@@ -13,31 +13,35 @@ class GamePage extends StatefulWidget {
  State<GamePage> createState() => _GamePageState();
}

void createNewGame(GameCubit gameCubit, int boardSize) {
  final GameData newGame = GameData.createRandom(boardSize);
  gameCubit.updateGameState(newGame);
}

class _GamePageState extends State<GamePage> {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<GameCubit, GameState>(
      builder: (context, gameState) {
        const boardSize = 6;
        const double boardWidgetWidth = 300;
        const double boardWidgetHeight = 300;

        final GameCubit gameCubit = BlocProvider.of<GameCubit>(context);

        return Column(
          mainAxisAlignment: MainAxisAlignment.start,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            gameState.game != null
                ? Container(
                    margin: EdgeInsets.all(4),
                    padding: EdgeInsets.all(4),
                    child: GameBoardWidget(
                ? GameBoardWidget(
                    gameData: gameState.game!,
                    ),
                    size: Size(boardWidgetWidth, boardWidgetHeight),
                  )
                : SizedBox.shrink(),
            IconButton(
              onPressed: () {
                const boardSize = 6;

                final GameData newGame = GameData.createRandom(boardSize);
                BlocProvider.of<GameCubit>(context).updateGameState(newGame);
                print(gameState);
                createNewGame(gameCubit, boardSize);
              },
              icon: Icon(UniconsSolid.star),
              color: Colors.white,
Original line number Diff line number Diff line
@@ -3,29 +3,39 @@ import 'package:flutter/material.dart';
import 'package:random/models/game_data.dart';
import 'package:random/ui/painters/cell_painter.dart';

class GameBoardWidget extends StatelessWidget {
  const GameBoardWidget({super.key, required this.gameData});
class GameBoardWidget extends StatefulWidget {
  const GameBoardWidget({
    super.key,
    required this.gameData,
    required this.size,
  });

  final GameData gameData;
  final Size size;

  @override
  State<GameBoardWidget> createState() => _GameBoardWidgetState();
}

class _GameBoardWidgetState extends State<GameBoardWidget> {
  @override
  Widget build(BuildContext context) {
    const staticBoardWidth = 300;
    const staticBoardHeight = 300;
    final widgetWidth = widget.size.width;
    final widgetHeight = widget.size.height;

    final rowsCount = this.gameData.board.length;
    final columnsCount = this.gameData.board[0].length;
    final rowsCount = widget.gameData.board.length;
    final columnsCount = widget.gameData.board[0].length;
    print('counts: rows=' + rowsCount.toString() + ' / columns=' + columnsCount.toString());

    final cellWidth = staticBoardWidth / columnsCount;
    final cellHeight = staticBoardHeight / rowsCount;
    final cellWidth = widgetWidth / columnsCount;
    final cellHeight = widgetHeight / rowsCount;
    print('cell: width=' + cellWidth.toString() + ' / height=' + cellHeight.toString());

    final List<Widget> cells = [];

    for (var y = 0; y < rowsCount; y++) {
      for (var x = 0; x < columnsCount; x++) {
        final GameDataItem item = this.gameData.board[y][x];
        final GameDataItem item = widget.gameData.board[y][x];

        final Widget cellContent = CustomPaint(
          size: Size(cellWidth, cellHeight),
@@ -33,24 +43,23 @@ class GameBoardWidget extends StatelessWidget {
          painter: CellPainter(value: item.value),
        );

        final Widget widget = Positioned(
        final Widget cellWidget = Positioned(
          left: (x * cellWidth).toDouble(),
          top: (y * cellHeight).toDouble(),
          child: Container(
            width: cellWidth,
            height: cellHeight,
            color: Colors.deepPurpleAccent,
            child: cellContent,
          ),
        );

        cells.add(widget);
        cells.add(cellWidget);
      }
    }

    return Container(
      width: staticBoardWidth.toDouble(),
      height: staticBoardHeight.toDouble(),
      width: widgetWidth,
      height: widgetHeight,
      color: Colors.grey,
      child: Stack(
        children: cells,
+33 −0
Original line number Diff line number Diff line
import 'dart:ui';

extension ColorExtension on Color {
  Color darken([int percent = 40]) {
    assert(1 <= percent && percent <= 100);
    final value = 1 - percent / 100;
    return Color.fromARGB(
      alpha,
      (red * value).round(),
      (green * value).round(),
      (blue * value).round(),
    );
  }

  Color lighten([int percent = 40]) {
    assert(1 <= percent && percent <= 100);
    final value = percent / 100;
    return Color.fromARGB(
      alpha,
      (red + ((255 - red) * value)).round(),
      (green + ((255 - green) * value)).round(),
      (blue + ((255 - blue) * value)).round(),
    );
  }

  Color avg(Color other) {
    final red = (this.red + other.red) ~/ 2;
    final green = (this.green + other.green) ~/ 2;
    final blue = (this.blue + other.blue) ~/ 2;
    final alpha = (this.alpha + other.alpha) ~/ 2;
    return Color.fromARGB(alpha, red, green, blue);
  }
}
+1 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ description: A random application, for testing purpose only.

publish_to: 'none'

version: 1.0.38+39
version: 1.0.39+40

environment:
  sdk: '^3.0.0'