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