From 61adbc23a552749a79fe956130f4e4d5fde7b312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Thu, 27 May 2021 21:45:09 +0200 Subject: [PATCH] Improve select image layout --- android/gradle.properties | 4 +-- lib/screens/home.dart | 69 +++++++++++++++++++++++++++++---------- 2 files changed, 53 insertions(+), 20 deletions(-) diff --git a/android/gradle.properties b/android/gradle.properties index 4bb5439..6bf54a6 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.9 -app.versionCode=9 +app.versionName=0.0.10 +app.versionCode=10 diff --git a/lib/screens/home.dart b/lib/screens/home.dart index bcb1e83..a2fdd2f 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -12,7 +12,6 @@ import '../utils/get_images_list.dart'; class Home extends StatelessWidget { static const String id = 'home'; - double _selectorImageSize = 200; double _tipImageSize = 100; double _tileImageSize = 80; @@ -30,6 +29,7 @@ class Home extends StatelessWidget { await getImagesList.init(); if (getImagesList.images != null) { myProvider.updateImages = getImagesList.images; + shuffleImages(myProvider); } } @@ -40,7 +40,13 @@ class Home extends StatelessWidget { myProvider.updateShuffling = false; } - Container _buildImageSelectorItem(Data myProvider, String image) { + void shuffleImages(Data myProvider) { + List images = myProvider.images; + images.shuffle(); + myProvider.updateImages = images; + } + + Container _buildImageSelectorItem(Data myProvider, String image, double size) { return Container( child: FlatButton( child: Container( @@ -54,8 +60,8 @@ class Home extends StatelessWidget { margin: EdgeInsets.all(2), child: Image( image: AssetImage(getImageAssetName(image)), - width: _selectorImageSize, - height: _selectorImageSize, + width: size, + height: size, fit: BoxFit.fill ), ), @@ -64,7 +70,7 @@ class Home extends StatelessWidget { ); } - Container _buildImageSelector(Data myProvider) { + Container _buildImageSelector(Data myProvider, double size) { if (myProvider.images.length == 0) { getImagesList(myProvider); } @@ -74,8 +80,27 @@ class Home extends StatelessWidget { padding: EdgeInsets.all(5), child: ListView( children: [ - for (var image in images) - _buildImageSelectorItem(myProvider, image), + Table( + defaultColumnWidth: IntrinsicColumnWidth(), + children: [ + for (var imageIndex = 0; imageIndex < images.length; imageIndex+=2) + TableRow( + children: [ + Column( + children: [ + _buildImageSelectorItem(myProvider, images[imageIndex], size) + ] + ), + Column( + children: [ + if (imageIndex+1 < images.length) + _buildImageSelectorItem(myProvider, images[imageIndex+1], size) + ] + ), + ] + ), + ], + ), ], ), ); @@ -253,29 +278,37 @@ class Home extends StatelessWidget { var content; + double _selectorImageSize = MediaQuery.of(context).size.width / 3; + if (_myProvider.shuffling) { content = _buildShufflingIndicatorWidget(); } else { if (_myProvider.image == '') { - content = _buildImageSelector(_myProvider); + content = _buildImageSelector(_myProvider, _selectorImageSize); } else { content = _buildGameWidget(_myProvider); } } + List<Widget> menuActions = [ + IconButton( + icon: const Icon(Icons.shuffle), + onPressed: () => shuffleImages(_myProvider), + ), + _buildTilesetSizeSelector(_myProvider), + ]; + + List<Widget> gameActions = [ + IconButton( + icon: const Icon(Icons.arrow_left_outlined), + onPressed: () => resetGame(_myProvider), + ) + ]; + return Scaffold( appBar: AppBar( title: Text('Puzzle'), - actions: <Widget>[ - _myProvider.image == '' - ? Text('') - : IconButton( - icon: const Icon(Icons.arrow_left_outlined), - onPressed: () => resetGame(_myProvider), - ) - , - _myProvider.image == '' ? _buildTilesetSizeSelector(_myProvider) : Text(''), - ], + actions: _myProvider.image == '' ? menuActions : gameActions, ), body: SafeArea( child: Center( -- GitLab