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

Merge branch '17-improve-global-layout' into 'master'

Resolve "Improve global layout"

Closes #17

See merge request !15
parents 98efa6f8 659addc5
No related branches found
No related tags found
1 merge request!15Resolve "Improve global layout"
Pipeline #1260 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,39 +107,15 @@ class Home extends StatelessWidget { ...@@ -108,39 +107,15 @@ 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(
borderRadius: BorderRadius.circular(4),
border: Border.all(
color: Colors.blue[100],
width: 4,
),
)
: null;
return FlatButton( if (myProvider.tilesCount == value) {
child: Container( text = '['+text+']';
padding: EdgeInsets.all(5),
decoration: border,
child: Text(value.toString()+'x'+value.toString()),
),
onPressed: () { myProvider.updateTilesCount = value; },
);
} }
Container _buildTilesetSizeSelector(Data myProvider) { return FlatButton(
return Container( child: Text(text),
child: Center( onPressed: () { myProvider.updateTilesCount = value; },
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
_buildTilesetSizeSelectorItem(myProvider, 3),
_buildTilesetSizeSelectorItem(myProvider, 4),
],
),
),
); );
} }
...@@ -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.
Please register or to comment