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

Merge branch '13-swap-tiles-on-drop' into 'master'

Resolve "Swap tiles on drop"

Closes #13

See merge request !9
parents d05e3716 f0367b63
No related branches found
No related tags found
1 merge request!9Resolve "Swap tiles on drop"
Pipeline #1236 passed
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=0.0.6 app.versionName=0.0.7
app.versionCode=6 app.versionCode=7
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../provider/data.dart';
class Tile { class Tile {
final Image image; final Image image;
...@@ -35,7 +38,7 @@ class Tile { ...@@ -35,7 +38,7 @@ class Tile {
); );
} }
Container widget() { Container widget(Data myProvider) {
return Container( return Container(
child: DragTarget<List<int>>( child: DragTarget<List<int>>(
builder: ( builder: (
...@@ -70,6 +73,10 @@ class Tile { ...@@ -70,6 +73,10 @@ class Tile {
}, },
onAccept: (List<int> data) { onAccept: (List<int> data) {
print(data.toString()); print(data.toString());
myProvider.swapTiles(
[this.currentCol, this.currentRow],
data
);
}, },
) )
); );
......
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import '../entities/tile.dart';
class Data extends ChangeNotifier { class Data extends ChangeNotifier {
// application data // application data
...@@ -38,6 +40,17 @@ class Data extends ChangeNotifier { ...@@ -38,6 +40,17 @@ class Data extends ChangeNotifier {
notifyListeners(); notifyListeners();
} }
void swapTiles(List<int> tile1, List<int> tile2) {
int indexTile1 = _tiles.indexWhere((tile) => ((tile.currentCol == tile1[0]) && (tile.currentRow == tile1[1])));
int indexTile2 = _tiles.indexWhere((tile) => ((tile.currentCol == tile2[0]) && (tile.currentRow == tile2[1])));
Tile swap = _tiles[indexTile1];
_tiles[indexTile1] = _tiles[indexTile2];
_tiles[indexTile2] = swap;
notifyListeners();
}
void resetGame() { void resetGame() {
_image = ''; _image = '';
notifyListeners(); notifyListeners();
......
...@@ -117,14 +117,14 @@ class Home extends StatelessWidget { ...@@ -117,14 +117,14 @@ class Home extends StatelessWidget {
y += height; y += height;
} }
tiles.shuffle();
return tiles; return tiles;
} }
Container _buildTilesetWidget(Data myProvider) { Container _buildTilesetWidget(Data myProvider) {
List tiles = myProvider.tiles; List tiles = myProvider.tiles;
tiles.shuffle();
int tileIndex = 0; int tileIndex = 0;
Table tileset = Table( Table tileset = Table(
...@@ -139,7 +139,7 @@ class Home extends StatelessWidget { ...@@ -139,7 +139,7 @@ class Home extends StatelessWidget {
for (var row = 0; row < _linesCount; row++) for (var row = 0; row < _linesCount; row++)
TableRow(children: [ TableRow(children: [
for (var col = 0; col < _columnsCount; col++) for (var col = 0; col < _columnsCount; col++)
Column(children: [tiles[tileIndex++].widget()]), Column(children: [tiles[tileIndex++].widget(myProvider)]),
]), ]),
] ]
); );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment