From f46110ce701b80d077f6b31ab402798046f5f8b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Thu, 8 Jul 2021 22:41:33 +0200 Subject: [PATCH] Improve flexibility in layout --- android/gradle.properties | 4 +- .../metadata/android/en-US/changelogs/28.txt | 1 + .../metadata/android/fr-FR/changelogs/28.txt | 1 + lib/entities/cell.dart | 4 ++ lib/layout/game.dart | 35 ++++++++++------- lib/layout/parameters.dart | 39 +++++++++---------- lib/utils/board_utils.dart | 8 +++- 7 files changed, 55 insertions(+), 37 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/28.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/28.txt diff --git a/android/gradle.properties b/android/gradle.properties index 408253c..e644338 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.27 -app.versionCode=27 +app.versionName=0.0.28 +app.versionCode=28 diff --git a/fastlane/metadata/android/en-US/changelogs/28.txt b/fastlane/metadata/android/en-US/changelogs/28.txt new file mode 100644 index 0000000..101a8b4 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/28.txt @@ -0,0 +1 @@ +Improve flexibility in layout diff --git a/fastlane/metadata/android/fr-FR/changelogs/28.txt b/fastlane/metadata/android/fr-FR/changelogs/28.txt new file mode 100644 index 0000000..c4828ee --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/28.txt @@ -0,0 +1 @@ +Amélioration de la flexibilité dans la mise en page diff --git a/lib/entities/cell.dart b/lib/entities/cell.dart index f9213e9..bb56ed9 100644 --- a/lib/entities/cell.dart +++ b/lib/entities/cell.dart @@ -81,6 +81,10 @@ class Cell { } Container widgetUpdateValue(Data myProvider) { + if (this.value < 0) { + return Container(); + } + String imageAsset = 'assets/skins/empty.png'; if (this.value > 0) { imageAsset = 'assets/skins/' + myProvider.skin + '_' + this.value.toString() + '.png'; diff --git a/lib/layout/game.dart b/lib/layout/game.dart index 9c9275a..e3c0615 100644 --- a/lib/layout/game.dart +++ b/lib/layout/game.dart @@ -34,6 +34,10 @@ class Game { bool isUpdatableCellSelected = isCellSelected ? !myProvider.cells[myProvider.currentCellRow][myProvider.currentCellCol].isFixed : false; int maxValue = myProvider.blockSizeHorizontal * myProvider.blockSizeVertical; + int maxItemsPerLine = 10; + int linesCount = (maxValue / maxItemsPerLine).floor() + 1; + int itemsCountPerLine = min(maxItemsPerLine, maxValue + 1); + return Container( margin: EdgeInsets.all(2), padding: EdgeInsets.all(2), @@ -41,19 +45,24 @@ class Game { child: Table( defaultColumnWidth: IntrinsicColumnWidth(), children: [ - TableRow( - children: [ - for (var value = 0; value <= maxValue; value++) - Column( - children: [ - Cell( - isUpdatableCellSelected ? value : 0, - false - ).widgetUpdateValue(myProvider) - ] - ), - ] - ), + for (var lineIndex = 0; lineIndex < linesCount; lineIndex++) + TableRow( + children: [ + for ( + var value = lineIndex * itemsCountPerLine; + value < (lineIndex + 1) * itemsCountPerLine; + value++ + ) + Column( + children: [ + Cell( + isUpdatableCellSelected ? (value <= maxValue ? value : -1) : -1, + false + ).widgetUpdateValue(myProvider) + ] + ), + ] + ), ] ), ); diff --git a/lib/layout/parameters.dart b/lib/layout/parameters.dart index 9ac761c..dad275d 100644 --- a/lib/layout/parameters.dart +++ b/lib/layout/parameters.dart @@ -5,18 +5,22 @@ import '../utils/game_utils.dart'; class Parameters { - static const double _parameterButtonSize = 70; - static const double _startButtonSize = 150; + static const double _startButtonSize = 120; static Container buildParametersSelector(Data myProvider) { return Container( + padding: EdgeInsets.all(2), + margin: EdgeInsets.all(2), child: Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ Parameters.buildParameterSelector(myProvider, 'difficulty'), + SizedBox(height: 5), Parameters.buildParameterSelector(myProvider, 'size'), + SizedBox(height: 5), Parameters.buildParameterSelector(myProvider, 'skin'), + SizedBox(height: 5), Parameters.buildStartGameButton(myProvider), ], @@ -31,6 +35,7 @@ class Parameters { mainAxisAlignment: MainAxisAlignment.center, children: [ FlatButton( + padding: EdgeInsets.all(2), child: Image( image: AssetImage('assets/icons/button_start.png'), width: _startButtonSize, @@ -44,28 +49,23 @@ class Parameters { } - static Column buildParameterSelector(Data myProvider, String parameterCode) { + static Table buildParameterSelector(Data myProvider, String parameterCode) { List availableValues = myProvider.getParameterAvailableValues(parameterCode); - return Column( + return Table( + defaultColumnWidth: IntrinsicColumnWidth(), children: [ - Table( - defaultColumnWidth: IntrinsicColumnWidth(), + TableRow( children: [ - TableRow( - children: [ - for (var index = 0; index < availableValues.length; index++) - Column( - children: [ - _buildParameterButton(myProvider, parameterCode, availableValues[index]) - ] - ), - ], - ), + for (var index = 0; index < availableValues.length; index++) + Column( + children: [ + _buildParameterButton(myProvider, parameterCode, availableValues[index]) + ] + ), ], ), - SizedBox(height: 20), - ] + ], ); } @@ -77,6 +77,7 @@ class Parameters { String imageAsset = 'assets/icons/' + parameterCode + '_' + parameterValue + '.png'; return FlatButton( + padding: EdgeInsets.all(2), child: Container( decoration: BoxDecoration( color: Colors.white, @@ -88,8 +89,6 @@ class Parameters { ), child: Image( image: AssetImage(imageAsset), - width: _parameterButtonSize, - height: _parameterButtonSize, fit: BoxFit.fill ), ), diff --git a/lib/utils/board_utils.dart b/lib/utils/board_utils.dart index 51520a9..8800856 100644 --- a/lib/utils/board_utils.dart +++ b/lib/utils/board_utils.dart @@ -7,12 +7,13 @@ import '../provider/data.dart'; class BoardUtils { static printGrid(List cells) { + String stringValues = '0123456789'; print(''); print('-------'); for (var rowIndex = 0; rowIndex < cells.length; rowIndex++) { String row = ''; for (var colIndex = 0; colIndex < cells[rowIndex].length; colIndex++) { - row += cells[rowIndex][colIndex].value.toString(); + row += stringValues[cells[rowIndex][colIndex].value]; } print(row); } @@ -62,11 +63,14 @@ class BoardUtils { List cells = []; int boardSize = int.parse(pow(grid.length, 1/2).toStringAsFixed(0)); + String stringValues = '0123456789'; + int index = 0; for (var rowIndex = 0; rowIndex < boardSize; rowIndex++) { List row = []; for (var colIndex = 0; colIndex < boardSize; colIndex++) { - int value = int.parse(grid[index++]); + String stringValue = grid[index++]; + int value = stringValues.indexOf(stringValue); row.add(Cell(value, (value != 0))); } cells.add(row); -- GitLab