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
android.useAndroidX=true
android.enableJetifier=true
app.versionName=0.0.13
app.versionCode=13
app.versionName=0.0.14
app.versionCode=14
......@@ -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(
......
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