diff --git a/android/gradle.properties b/android/gradle.properties index 135006f9c1386c8757595c43e890e911f732f5a3..85b94f88ee157e1d1b3cec184c8948902443d36f 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,5 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -app.versionName=0.0.6 -app.versionCode=6 +app.versionName=0.0.7 +app.versionCode=7 diff --git a/lib/entities/tile.dart b/lib/entities/tile.dart index e9919d72673fc50fc4fd9d535bd4f9bdfe11cb33..2860b50f6df50c69071adb71fdd6f51325e5c189 100644 --- a/lib/entities/tile.dart +++ b/lib/entities/tile.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; + +import '../provider/data.dart'; class Tile { final Image image; @@ -35,7 +38,7 @@ class Tile { ); } - Container widget() { + Container widget(Data myProvider) { return Container( child: DragTarget<List<int>>( builder: ( @@ -70,6 +73,10 @@ class Tile { }, onAccept: (List<int> data) { print(data.toString()); + myProvider.swapTiles( + [this.currentCol, this.currentRow], + data + ); }, ) ); diff --git a/lib/provider/data.dart b/lib/provider/data.dart index 5979a1ba28d69118bb64e34670c2eb2d500e77bf..601037d06095346a23efb203105877e7e6e02151 100644 --- a/lib/provider/data.dart +++ b/lib/provider/data.dart @@ -1,5 +1,7 @@ import 'package:flutter/foundation.dart'; +import '../entities/tile.dart'; + class Data extends ChangeNotifier { // application data @@ -38,6 +40,17 @@ class Data extends ChangeNotifier { 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() { _image = ''; notifyListeners(); diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 42432a25d78b5f9303227413c9510782fcf89585..6d7bd078f2396987ae4e22b7ecff7894b880f013 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -117,14 +117,14 @@ class Home extends StatelessWidget { y += height; } + tiles.shuffle(); + return tiles; } Container _buildTilesetWidget(Data myProvider) { List tiles = myProvider.tiles; - tiles.shuffle(); - int tileIndex = 0; Table tileset = Table( @@ -139,7 +139,7 @@ class Home extends StatelessWidget { for (var row = 0; row < _linesCount; row++) TableRow(children: [ for (var col = 0; col < _columnsCount; col++) - Column(children: [tiles[tileIndex++].widget()]), + Column(children: [tiles[tileIndex++].widget(myProvider)]), ]), ] );