Skip to content
Snippets Groups Projects
Commit d755815e authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Normalize Activity application architecture

parent 77607ceb
No related branches found
No related tags found
1 merge request!27Resolve "Normalize Activity application architecture"
Pipeline #6678 passed
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:solitaire/cubit/game_cubit.dart';
import 'package:solitaire/models/game/cell.dart';
import 'package:solitaire/models/game/game.dart';
import 'package:solitaire/cubit/activity/activity_cubit.dart';
import 'package:solitaire/models/activity/cell.dart';
import 'package:solitaire/models/activity/activity.dart';
class TileWidget extends StatelessWidget {
const TileWidget({
......@@ -17,18 +17,18 @@ class TileWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocBuilder<GameCubit, GameState>(
builder: (BuildContext context, GameState gameState) {
final Game currentGame = gameState.currentGame;
return BlocBuilder<ActivityCubit, ActivityState>(
builder: (BuildContext context, ActivityState activityState) {
final Activity currentActivity = activityState.currentActivity;
if (tile.hasHole) {
return render(
currentGame: currentGame,
gameCubit: BlocProvider.of<GameCubit>(context),
currentActivity: currentActivity,
activityCubit: BlocProvider.of<ActivityCubit>(context),
);
} else {
return Image(
image: AssetImage('assets/skins/${currentGame.globalSettings.skin}_board.png'),
image: AssetImage('assets/skins/${currentActivity.globalSettings.skin}_board.png'),
width: tileSize,
height: tileSize,
fit: BoxFit.fill,
......@@ -39,19 +39,19 @@ class TileWidget extends StatelessWidget {
}
Widget render({
required Game currentGame,
required GameCubit gameCubit,
required Activity currentActivity,
required ActivityCubit activityCubit,
}) {
List<Widget> stack = [
hole(
currentGame: currentGame,
gameCubit: gameCubit,
currentActivity: currentActivity,
activityCubit: activityCubit,
),
];
if (tile.hasPeg) {
stack.add(draggable(
currentGame: currentGame,
currentActivity: currentActivity,
));
}
......@@ -62,10 +62,10 @@ class TileWidget extends StatelessWidget {
}
Widget hole({
required Game currentGame,
required GameCubit gameCubit,
required Activity currentActivity,
required ActivityCubit activityCubit,
}) {
String image = 'assets/skins/${currentGame.globalSettings.skin}_hole.png';
String image = 'assets/skins/${currentActivity.globalSettings.skin}_hole.png';
return DragTarget<List<int>>(
builder: (
......@@ -83,12 +83,12 @@ class TileWidget extends StatelessWidget {
onAcceptWithDetails: (DragTargetDetails<List<int>> source) {
List<int> target = [tile.location.col, tile.location.row];
// printlog('(drag) Pick from ' + source.toString() + ' and drop on ' + target.toString());
if (currentGame.board.isMoveAllowed(
if (currentActivity.board.isMoveAllowed(
source: source.data,
target: target,
)) {
gameCubit.move(
currentGame: currentGame,
activityCubit.move(
currentActivity: currentActivity,
source: source.data,
target: target,
);
......@@ -98,14 +98,14 @@ class TileWidget extends StatelessWidget {
}
Widget draggable({
required Game currentGame,
required Activity currentActivity,
}) {
return Draggable<List<int>>(
data: [tile.location.col, tile.location.row],
// Widget when draggable is being dragged
feedback: peg(
currentGame: currentGame,
currentActivity: currentActivity,
),
// Widget to display on original place when being dragged
......@@ -113,15 +113,15 @@ class TileWidget extends StatelessWidget {
// Widget when draggable is stationary
child: peg(
currentGame: currentGame,
currentActivity: currentActivity,
),
);
}
Widget peg({
required Game currentGame,
required Activity currentActivity,
}) {
String image = 'assets/skins/${currentGame.globalSettings.skin}_peg.png';
String image = 'assets/skins/${currentActivity.globalSettings.skin}_peg.png';
return Image(
image: AssetImage(image),
......
......@@ -245,10 +245,10 @@ packages:
dependency: transitive
description:
name: path_provider
sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378
sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
version: "2.1.5"
path_provider_android:
dependency: transitive
description:
......@@ -442,10 +442,10 @@ packages:
dependency: transitive
description:
name: win32
sha256: "2735daae5150e8b1dfeb3eb0544b4d3af0061e9e82cef063adcd583bdae4306a"
sha256: "10169d3934549017f0ae278ccb07f828f9d6ea21573bab0fb77b0e1ef0fce454"
url: "https://pub.dev"
source: hosted
version: "5.7.0"
version: "5.7.2"
xdg_directories:
dependency: transitive
description:
......
......@@ -3,7 +3,7 @@ description: Solitaire Game
publish_to: "none"
version: 0.3.1+24
version: 0.4.0+25
environment:
sdk: "^3.0.0"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment