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

Improve global layout

parent 98efa6f8
No related branches found
No related tags found
1 merge request!15Resolve "Improve global layout"
Pipeline #1258 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.13 app.versionName=0.0.14
app.versionCode=13 app.versionCode=14
...@@ -14,7 +14,6 @@ class Home extends StatelessWidget { ...@@ -14,7 +14,6 @@ class Home extends StatelessWidget {
static const String id = 'home'; static const String id = 'home';
double _tipImageSize = 100; double _tipImageSize = 100;
double _tileImageSize = 80;
Future<void> resetGame(Data myProvider) async { Future<void> resetGame(Data myProvider) async {
myProvider.updateImage = ''; myProvider.updateImage = '';
...@@ -34,10 +33,10 @@ class Home extends StatelessWidget { ...@@ -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.updateShuffling = true;
myProvider.updateImage = imageCode; myProvider.updateImage = imageCode;
myProvider.updateTiles = await splitImageInTiles(myProvider); myProvider.updateTiles = await splitImageInTiles(myProvider, tileImageSize);
myProvider.updateShuffling = false; myProvider.updateShuffling = false;
} }
...@@ -47,7 +46,7 @@ class Home extends StatelessWidget { ...@@ -47,7 +46,7 @@ class Home extends StatelessWidget {
myProvider.updateImages = images; myProvider.updateImages = images;
} }
Container _buildImageSelectorItem(Data myProvider, String image, double size) { Container _buildImageSelectorItem(Data myProvider, String image, double selectImageSize, double tileImageSize) {
return Container( return Container(
child: FlatButton( child: FlatButton(
child: Container( child: Container(
...@@ -61,17 +60,17 @@ class Home extends StatelessWidget { ...@@ -61,17 +60,17 @@ class Home extends StatelessWidget {
margin: EdgeInsets.all(2), margin: EdgeInsets.all(2),
child: Image( child: Image(
image: AssetImage(getImageAssetName(image)), image: AssetImage(getImageAssetName(image)),
width: size, width: selectImageSize,
height: size, height: selectImageSize,
fit: BoxFit.fill 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) { if (myProvider.images.length == 0) {
getImagesList(myProvider); getImagesList(myProvider);
} }
...@@ -89,13 +88,13 @@ class Home extends StatelessWidget { ...@@ -89,13 +88,13 @@ class Home extends StatelessWidget {
children: [ children: [
Column( Column(
children: [ children: [
_buildImageSelectorItem(myProvider, images[imageIndex], size) _buildImageSelectorItem(myProvider, images[imageIndex], size, tileImageSize)
] ]
), ),
Column( Column(
children: [ children: [
if (imageIndex+1 < images.length) 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 { ...@@ -108,42 +107,18 @@ class Home extends StatelessWidget {
} }
FlatButton _buildTilesetSizeSelectorItem(Data myProvider, int value) { FlatButton _buildTilesetSizeSelectorItem(Data myProvider, int value) {
BoxDecoration border = String text = value.toString()+'x'+value.toString();
myProvider.tilesCount == value
? BoxDecoration( if (myProvider.tilesCount == value) {
borderRadius: BorderRadius.circular(4), text = '['+text+']';
border: Border.all( }
color: Colors.blue[100],
width: 4,
),
)
: null;
return FlatButton( return FlatButton(
child: Container( child: Text(text),
padding: EdgeInsets.all(5),
decoration: border,
child: Text(value.toString()+'x'+value.toString()),
),
onPressed: () { myProvider.updateTilesCount = value; }, 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) { List<Tile> shuffleTiles(List<Tile> tiles) {
var random = new Random(); var random = new Random();
int tilesCount = tiles.length; int tilesCount = tiles.length;
...@@ -168,7 +143,7 @@ class Home extends StatelessWidget { ...@@ -168,7 +143,7 @@ class Home extends StatelessWidget {
return tiles; return tiles;
} }
Future<List<Tile>> splitImageInTiles(Data myProvider) async { Future<List<Tile>> splitImageInTiles(Data myProvider, double tileImageSize) async {
String imageAsset = getImageAssetName(myProvider.image); String imageAsset = getImageAssetName(myProvider.image);
Uint8List imageData = (await rootBundle.load(imageAsset)) Uint8List imageData = (await rootBundle.load(imageAsset))
.buffer .buffer
...@@ -189,7 +164,7 @@ class Home extends StatelessWidget { ...@@ -189,7 +164,7 @@ class Home extends StatelessWidget {
imglib.copyCrop(image, x, y, width, height) imglib.copyCrop(image, x, y, width, height)
) )
), ),
_tileImageSize, tileImageSize,
j, i, j, i,
j, i, j, i,
) )
...@@ -317,35 +292,38 @@ class Home extends StatelessWidget { ...@@ -317,35 +292,38 @@ class Home extends StatelessWidget {
var content; var content;
double _selectorImageSize = MediaQuery.of(context).size.width / 3; double _selectorImageSize = MediaQuery.of(context).size.width / 3;
double _tileImageSize = (MediaQuery.of(context).size.width - 70) / _myProvider.tilesCount;
if (_myProvider.shuffling) { if (_myProvider.shuffling) {
content = _buildShufflingIndicatorWidget(); content = _buildShufflingIndicatorWidget();
} else { } else {
if (_myProvider.image == '') { if (_myProvider.image == '') {
content = _buildImageSelector(_myProvider, _selectorImageSize); content = _buildImageSelector(_myProvider, _selectorImageSize, _tileImageSize);
} else { } else {
content = _buildGameWidget(_myProvider); content = _buildGameWidget(_myProvider);
} }
} }
List<Widget> menuActions = [ List<Widget> menuActions = [
IconButton( _buildTilesetSizeSelectorItem(_myProvider, 3),
icon: const Icon(Icons.shuffle), _buildTilesetSizeSelectorItem(_myProvider, 4),
_buildTilesetSizeSelectorItem(_myProvider, 5),
FlatButton(
child: Text('🎲'),
onPressed: () => shuffleImages(_myProvider), onPressed: () => shuffleImages(_myProvider),
), ),
_buildTilesetSizeSelector(_myProvider),
]; ];
List<Widget> gameActions = [ List<Widget> gameActions = [
IconButton( FlatButton(
icon: const Icon(Icons.arrow_left_outlined), child: Text('◀️'),
onPressed: () => resetGame(_myProvider), onPressed: () => resetGame(_myProvider),
) ),
]; ];
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text('Puzzle'), title: Text('🧩'),
actions: _myProvider.image == '' ? menuActions : gameActions, actions: _myProvider.image == '' ? menuActions : gameActions,
), ),
body: SafeArea( body: SafeArea(
......
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