From f7685c3d06e9e03628f709f72fe5e0dce338e239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Sun, 9 May 2021 18:17:41 +0200 Subject: [PATCH] Clean some code, improve layout --- android/gradle.properties | 4 +- lib/screens/game_pick_word.dart | 112 +++++++++++------- ..._from_word.dart => random_pick_image.dart} | 1 + 3 files changed, 75 insertions(+), 42 deletions(-) rename lib/utils/{get_image_from_word.dart => random_pick_image.dart} (96%) diff --git a/android/gradle.properties b/android/gradle.properties index a541b96..8c1811e 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.1.5 -app.versionCode=29 +app.versionName=0.1.6 +app.versionCode=30 diff --git a/lib/screens/game_pick_word.dart b/lib/screens/game_pick_word.dart index 75ecc68..731b2bc 100644 --- a/lib/screens/game_pick_word.dart +++ b/lib/screens/game_pick_word.dart @@ -3,7 +3,7 @@ import 'package:provider/provider.dart'; import '../provider/data.dart'; import '../utils/random_pick_word.dart'; -import '../utils/get_image_from_word.dart'; +import '../utils/random_pick_image.dart'; class GamePickWordPage extends StatelessWidget { int _count = 4; @@ -73,56 +73,93 @@ class GamePickWordPage extends StatelessWidget { } } - Container _buildScoreContainer(Data myProvider) { - TextStyle style = TextStyle( - fontSize: 30, - fontWeight: FontWeight.w600, - color: Colors.black, + Container _buildScoreItemContainer(String text, Color blockColor) { + Color backgroundColor = blockColor; + + // Darken block color to get border color + double amount = 0.2; + final hsl = HSLColor.fromColor(blockColor); + final hslDark = hsl.withLightness((hsl.lightness - amount).clamp(0.0, 1.0)); + Color borderColor = hslDark.toColor(); + + return Container( + margin: EdgeInsets.symmetric(horizontal: 15), + padding: EdgeInsets.all(5), + decoration: BoxDecoration( + color: backgroundColor, + borderRadius: BorderRadius.circular(4), + border: Border.all( + color: borderColor, + width: 4, + ), + ), + child: Text( + text, + style: TextStyle( + fontSize: 25, + fontWeight: FontWeight.w600, + color: Colors.black, + ), + ), ); + } + Container _buildScoreContainer(Data myProvider) { return Container( padding: EdgeInsets.all(5), child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ - Text( + _buildScoreItemContainer( 'β ' + myProvider.questionsCount.toString(), - style: style, + Colors.white, ), - SizedBox(width: 30), - Text( + SizedBox(width: 20), + _buildScoreItemContainer( 'βΊοΈ ' + myProvider.goodAnswers.toString(), - style: style, + Colors.green, ), - SizedBox(width: 30), - Text( + SizedBox(width: 20), + _buildScoreItemContainer( 'π ' + myProvider.wrongAnswers.toString(), - style: style, + Colors.orange, ), ], ), ); } - Container _buildImageContainer(String image, Color color) { + Container _buildImageContainer(String image) { String imageAsset = 'assets/placeholder.png'; if (image != null) { imageAsset = 'assets/images/'+image; } return Container( - padding: EdgeInsets.all(5), child: FlatButton( color: Colors.teal, - child: Image(image: AssetImage(imageAsset)), + child: Container( + margin: EdgeInsets.all(2), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + border: Border.all( + color: Colors.teal, + width: 8, + ), + ), + child: Image( + image: AssetImage(imageAsset), + width: 150, + height: 150, + fit: BoxFit.fill + ), + ), ), ); } Column _buildImageItemsBlock(List images) { - Color color = Colors.black; - if ((images == null) || (images.length != _count)) { return Column(); } @@ -135,23 +172,23 @@ class GamePickWordPage extends StatelessWidget { mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ - _buildImageContainer(images[0], color), - _buildImageContainer(images[1], color), + _buildImageContainer(images[0]), + _buildImageContainer(images[1]), ], ), Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ - _buildImageContainer(images[2], color), - _buildImageContainer(images[3], color), + _buildImageContainer(images[2]), + _buildImageContainer(images[3]), ], ) ], ); } - Container _buildTextContainer(Data myProvider, Map word, Color color) { + Container _buildTextContainer(Data myProvider, Map word) { return Container( child: RaisedButton( color: Colors.green, @@ -161,7 +198,7 @@ class GamePickWordPage extends StatelessWidget { style: TextStyle( fontSize: 20, fontWeight: FontWeight.w400, - color: color, + color: Colors.white, ), ), onPressed: () { checkWord(myProvider, word); }, @@ -173,8 +210,6 @@ class GamePickWordPage extends StatelessWidget { Map word = myProvider.word; List otherWords = myProvider.otherWords; - Color color = Colors.white; - if ((word == null) || (otherWords.length != (_count - 1))) { return Column(); } @@ -196,56 +231,53 @@ class GamePickWordPage extends StatelessWidget { mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ - _buildTextContainer(myProvider, words[0], color), + _buildTextContainer(myProvider, words[0]), SizedBox(width: 10), - _buildTextContainer(myProvider, words[1], color), + _buildTextContainer(myProvider, words[1]), ], ), - SizedBox(height: 10), + SizedBox(height: 5), Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ - _buildTextContainer(myProvider, words[2], color), + _buildTextContainer(myProvider, words[2]), SizedBox(width: 10), - _buildTextContainer(myProvider, words[3], color), + _buildTextContainer(myProvider, words[3]), ], ) ], ); } - Column _buildStartGameButton(Data myProvider) { - + Column _buildStartGameBlock(Data myProvider) { return Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ Container( child: RaisedButton( - color: Colors.green, + color: Colors.teal, padding: EdgeInsets.all(35), child: Text( "π«π·", style: TextStyle( fontSize: 60, - fontWeight: FontWeight.w600, color: Colors.black, ), ), onPressed: () => startGame(myProvider, 'fr'), ), ), - SizedBox(height: 20), + SizedBox(height: 15), Container( child: RaisedButton( - color: Colors.green, + color: Colors.teal, padding: EdgeInsets.all(35), child: Text( "π¬π§", style: TextStyle( fontSize: 60, - fontWeight: FontWeight.w600, color: Colors.black, ), ), @@ -280,7 +312,7 @@ class GamePickWordPage extends StatelessWidget { _buildImageItemsBlock(_myProvider.images), SizedBox(height: 2), ((_myProvider.word == null) || (_myProvider.word['key'] == '')) ? - _buildStartGameButton(_myProvider) : + _buildStartGameBlock(_myProvider) : _buildScoreContainer(_myProvider), SizedBox(height: 2), _buildTextItemsBlock(_myProvider), diff --git a/lib/utils/get_image_from_word.dart b/lib/utils/random_pick_image.dart similarity index 96% rename from lib/utils/get_image_from_word.dart rename to lib/utils/random_pick_image.dart index 1b41e84..15ea476 100644 --- a/lib/utils/get_image_from_word.dart +++ b/lib/utils/random_pick_image.dart @@ -8,6 +8,7 @@ class RandomPickImage { List _images; init(String word, int count) async { + _images = new List(count); await imageFromLocalFile(word, count); } -- GitLab