diff --git a/android/gradle.properties b/android/gradle.properties index 65eed6426393974efb5a056ec44936d42b5ef2a1..4bb5439f682100f8ef4ba80a557fe4f2f0ab14c2 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.8 -app.versionCode=8 +app.versionName=0.0.9 +app.versionCode=9 diff --git a/lib/provider/data.dart b/lib/provider/data.dart index 601037d06095346a23efb203105877e7e6e02151..3f05b5a9e4502d4cfd166146c4d237938dd2e2a3 100644 --- a/lib/provider/data.dart +++ b/lib/provider/data.dart @@ -4,6 +4,9 @@ import '../entities/tile.dart'; class Data extends ChangeNotifier { + // application configuration + int _tilesCount = 3; + // application data List _images = []; String _image = ''; @@ -19,6 +22,13 @@ class Data extends ChangeNotifier { notifyListeners(); } + int get tilesCount => _tilesCount; + + set updateTilesCount(int value) { + _tilesCount = value; + notifyListeners(); + } + List get images => _images; set updateImages(List value) { diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 6d7bd078f2396987ae4e22b7ecff7894b880f013..bcb1e8339ef5a07099a7ed168508d13363f4f64e 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -12,9 +12,6 @@ import '../utils/get_images_list.dart'; class Home extends StatelessWidget { static const String id = 'home'; - int _linesCount = 4; - int _columnsCount = 4; - double _selectorImageSize = 200; double _tipImageSize = 100; double _tileImageSize = 80; @@ -84,6 +81,43 @@ class Home extends StatelessWidget { ); } + FlatButton _buildTilesetSizeSelectorItem(Data myProvider, int value) { + BoxDecoration border = + myProvider.tilesCount == value + ? BoxDecoration( + borderRadius: BorderRadius.circular(4), + border: Border.all( + color: Colors.blue[100], + width: 4, + ), + ) + : null; + + return FlatButton( + child: Container( + padding: EdgeInsets.all(5), + decoration: border, + child: Text(value.toString()+'x'+value.toString()), + ), + onPressed: () { myProvider.updateTilesCount = value; }, + ); + } + + Container _buildTilesetSizeSelector(Data myProvider) { + return Container( + child: Center( + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + _buildTilesetSizeSelectorItem(myProvider, 3), + _buildTilesetSizeSelectorItem(myProvider, 4), + ], + ), + ), + ); + } + Future<List<Tile>> splitImageInTiles(Data myProvider) async { String imageAsset = getImageAssetName(myProvider.image); Uint8List imageData = (await rootBundle.load(imageAsset)) @@ -92,12 +126,12 @@ class Home extends StatelessWidget { imglib.Image image = imglib.decodeImage(imageData); int x = 0, y = 0; - int width = (image.width / _linesCount).round(); - int height = (image.height / _columnsCount).round(); + int width = (image.width / myProvider.tilesCount).round(); + int height = (image.height / myProvider.tilesCount).round(); List<Tile> tiles = List<Tile>(); - for (int i = 0; i < _linesCount; i++) { - for (int j = 0; j < _columnsCount; j++) { + for (int i = 0; i < myProvider.tilesCount; i++) { + for (int j = 0; j < myProvider.tilesCount; j++) { tiles.add( Tile( Image.memory( @@ -136,9 +170,9 @@ class Home extends StatelessWidget { width: 2, ), children: [ - for (var row = 0; row < _linesCount; row++) + for (var row = 0; row < myProvider.tilesCount; row++) TableRow(children: [ - for (var col = 0; col < _columnsCount; col++) + for (var col = 0; col < myProvider.tilesCount; col++) Column(children: [tiles[tileIndex++].widget(myProvider)]), ]), ] @@ -236,9 +270,11 @@ class Home extends StatelessWidget { _myProvider.image == '' ? Text('') : IconButton( - icon: const Icon(Icons.arrow_left_outlined), - onPressed: () => resetGame(_myProvider), - ), + icon: const Icon(Icons.arrow_left_outlined), + onPressed: () => resetGame(_myProvider), + ) + , + _myProvider.image == '' ? _buildTilesetSizeSelector(_myProvider) : Text(''), ], ), body: SafeArea(