diff --git a/android/gradle.properties b/android/gradle.properties index 663881258a10822c0b4abc064b6e0bc0ccf48833..81949dfd2077495aaea8a6bc81ad9c75442f9ebb 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.13 -app.versionCode=13 +app.versionName=0.0.14 +app.versionCode=14 diff --git a/lib/screens/home.dart b/lib/screens/home.dart index e94dd6a1b189cabfee966fb4516a6c3f48e65ca0..d55a6f3eeb6654216e946ff0932732495c11aa0b 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -14,7 +14,6 @@ class Home extends StatelessWidget { static const String id = 'home'; double _tipImageSize = 100; - double _tileImageSize = 80; Future<void> resetGame(Data myProvider) async { myProvider.updateImage = ''; @@ -34,10 +33,10 @@ class Home extends StatelessWidget { } } - Future<void> selectImage(Data myProvider, String imageCode) async { + Future<void> selectImage(Data myProvider, String imageCode, double tileImageSize) async { myProvider.updateShuffling = true; myProvider.updateImage = imageCode; - myProvider.updateTiles = await splitImageInTiles(myProvider); + myProvider.updateTiles = await splitImageInTiles(myProvider, tileImageSize); myProvider.updateShuffling = false; } @@ -47,7 +46,7 @@ class Home extends StatelessWidget { myProvider.updateImages = images; } - Container _buildImageSelectorItem(Data myProvider, String image, double size) { + Container _buildImageSelectorItem(Data myProvider, String image, double selectImageSize, double tileImageSize) { return Container( child: FlatButton( child: Container( @@ -61,17 +60,17 @@ class Home extends StatelessWidget { margin: EdgeInsets.all(2), child: Image( image: AssetImage(getImageAssetName(image)), - width: size, - height: size, + width: selectImageSize, + height: selectImageSize, fit: BoxFit.fill ), ), - onPressed: () { selectImage(myProvider, image); }, + onPressed: () { selectImage(myProvider, image, tileImageSize); }, ), ); } - Container _buildImageSelector(Data myProvider, double size) { + Container _buildImageSelector(Data myProvider, double size, double tileImageSize) { if (myProvider.images.length == 0) { getImagesList(myProvider); } @@ -89,13 +88,13 @@ class Home extends StatelessWidget { children: [ Column( children: [ - _buildImageSelectorItem(myProvider, images[imageIndex], size) + _buildImageSelectorItem(myProvider, images[imageIndex], size, tileImageSize) ] ), Column( children: [ if (imageIndex+1 < images.length) - _buildImageSelectorItem(myProvider, images[imageIndex+1], size) + _buildImageSelectorItem(myProvider, images[imageIndex+1], size, tileImageSize) ] ), ] @@ -108,42 +107,18 @@ 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; + String text = value.toString()+'x'+value.toString(); + + if (myProvider.tilesCount == value) { + text = '['+text+']'; + } return FlatButton( - child: Container( - padding: EdgeInsets.all(5), - decoration: border, - child: Text(value.toString()+'x'+value.toString()), - ), + child: Text(text), 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), - ], - ), - ), - ); - } - List<Tile> shuffleTiles(List<Tile> tiles) { var random = new Random(); int tilesCount = tiles.length; @@ -168,7 +143,7 @@ class Home extends StatelessWidget { return tiles; } - Future<List<Tile>> splitImageInTiles(Data myProvider) async { + Future<List<Tile>> splitImageInTiles(Data myProvider, double tileImageSize) async { String imageAsset = getImageAssetName(myProvider.image); Uint8List imageData = (await rootBundle.load(imageAsset)) .buffer @@ -189,7 +164,7 @@ class Home extends StatelessWidget { imglib.copyCrop(image, x, y, width, height) ) ), - _tileImageSize, + tileImageSize, j, i, j, i, ) @@ -317,35 +292,38 @@ class Home extends StatelessWidget { var content; double _selectorImageSize = MediaQuery.of(context).size.width / 3; + double _tileImageSize = (MediaQuery.of(context).size.width - 70) / _myProvider.tilesCount; if (_myProvider.shuffling) { content = _buildShufflingIndicatorWidget(); } else { if (_myProvider.image == '') { - content = _buildImageSelector(_myProvider, _selectorImageSize); + content = _buildImageSelector(_myProvider, _selectorImageSize, _tileImageSize); } else { content = _buildGameWidget(_myProvider); } } List<Widget> menuActions = [ - IconButton( - icon: const Icon(Icons.shuffle), + _buildTilesetSizeSelectorItem(_myProvider, 3), + _buildTilesetSizeSelectorItem(_myProvider, 4), + _buildTilesetSizeSelectorItem(_myProvider, 5), + FlatButton( + child: Text('🎲'), onPressed: () => shuffleImages(_myProvider), ), - _buildTilesetSizeSelector(_myProvider), ]; List<Widget> gameActions = [ - IconButton( - icon: const Icon(Icons.arrow_left_outlined), + FlatButton( + child: Text('â—€ï¸'), onPressed: () => resetGame(_myProvider), - ) + ), ]; return Scaffold( appBar: AppBar( - title: Text('Puzzle'), + title: Text('🧩'), actions: _myProvider.image == '' ? menuActions : gameActions, ), body: SafeArea(