From fe4900127bf0a4beccfdbbf3f5b77304564b79a3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Fri, 24 Jun 2022 22:26:40 +0200
Subject: [PATCH] Clean code, remove deprecations

---
 android/gradle.properties        |  4 +-
 lib/main.dart                    | 37 +++++++++--------
 lib/provider/data.dart           |  3 +-
 lib/screens/game_pick_image.dart | 69 +++++++++++++++++---------------
 lib/screens/game_pick_word.dart  | 65 ++++++++++++++++--------------
 lib/screens/home.dart            | 12 +++---
 lib/utils/random_pick_data.dart  | 19 +++++----
 lib/utils/random_pick_image.dart |  4 +-
 lib/utils/random_pick_word.dart  |  4 +-
 pubspec.lock                     | 16 ++++----
 test/widget_test.dart            | 14 -------
 11 files changed, 123 insertions(+), 124 deletions(-)
 delete mode 100644 test/widget_test.dart

diff --git a/android/gradle.properties b/android/gradle.properties
index 18da836..3e5bc11 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.24
-app.versionCode=48
+app.versionName=0.1.25
+app.versionCode=49
diff --git a/lib/main.dart b/lib/main.dart
index 7c10b09..60bfe3f 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -26,25 +26,28 @@ class MyApp extends StatelessWidget {
           ),
           home: Home(),
           onGenerateRoute: (settings) {
-            final args = settings.arguments as Map<String, dynamic>;
+            switch (settings.name) {
+              case '/game-pick-word':
+                {
+                  return MaterialPageRoute(
+                    builder: (context) => GamePickWordPage(),
+                  );
+                }
+                break;
 
-            switch(settings.name) {
-              case '/game-pick-word': {
-                return MaterialPageRoute(
-                  builder: (context) => GamePickWordPage(),
-                );
-              }
-              break;
+              case '/game-pick-image':
+                {
+                  return MaterialPageRoute(
+                    builder: (context) => GamePickImagePage(),
+                  );
+                }
+                break;
 
-              case '/game-pick-image': {
-                return MaterialPageRoute(
-                  builder: (context) => GamePickImagePage(),
-                );
-              }
-              break;
-
-              default: { print("Unknown menu entry"); }
-              break;
+              default:
+                {
+                  print("Unknown menu entry");
+                }
+                break;
             }
 
             return null;
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index 9d02de7..42c833c 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -1,12 +1,11 @@
 import 'package:flutter/foundation.dart';
 
 class Data extends ChangeNotifier {
-
   // Language
   String _lang = '';
 
   // randomization
-  Map _word = null;
+  Map _word;
   List _otherWords = [];
   List _images = [];
   final int _recentWordsCount = 20;
diff --git a/lib/screens/game_pick_image.dart b/lib/screens/game_pick_image.dart
index 507f401..bf549de 100644
--- a/lib/screens/game_pick_image.dart
+++ b/lib/screens/game_pick_image.dart
@@ -5,8 +5,8 @@ import '../provider/data.dart';
 import '../utils/random_pick_data.dart';
 
 class GamePickImagePage extends StatelessWidget {
-  int _countWords = 4;
-  int _countImages = 1;
+  final int _countWords = 4;
+  final int _countImages = 1;
 
   Future<void> startGame(Data myProvider, String lang) async {
     await resetGame(myProvider);
@@ -44,11 +44,9 @@ class GamePickImagePage extends StatelessWidget {
       }
       attempts++;
 
-      if (
-        (words != null) && (words.length == _countWords)
-        &&
-        !myProvider.isRecentlyPicked(word['key'])
-      ) {
+      if ((words != null) &&
+          (words.length == _countWords) &&
+          !myProvider.isRecentlyPicked(word['key'])) {
         myProvider.updateWord = word;
         myProvider.updateImages = words;
       }
@@ -130,18 +128,14 @@ class GamePickImagePage extends StatelessWidget {
     double imageSize = 130;
 
     String imageAsset = 'assets/placeholder.png';
-    if (
-      (word['images'] != null)
-      &&
-      (word['images'].length != 0)
-      &&
-      (word['images'][0] != null)
-    ) {
-        imageAsset = 'assets/images/'+word['images'][0];
+    if ((word['images'] != null) &&
+        (word['images'].length != 0) &&
+        (word['images'][0] != null)) {
+      imageAsset = 'assets/images/' + word['images'][0];
     }
 
     return Container(
-      child: FlatButton(
+      child: TextButton(
         child: Container(
           decoration: BoxDecoration(
             borderRadius: BorderRadius.circular(8),
@@ -155,10 +149,12 @@ class GamePickImagePage extends StatelessWidget {
             image: AssetImage(imageAsset),
             width: imageSize,
             height: imageSize,
-            fit: BoxFit.fill
+            fit: BoxFit.fill,
           ),
         ),
-        onPressed: () { checkWord(myProvider, word); },
+        onPressed: () {
+          checkWord(myProvider, word);
+        },
       ),
     );
   }
@@ -217,8 +213,10 @@ class GamePickImagePage extends StatelessWidget {
               width: 6,
             ),
           ),
-          child: RaisedButton(
-            padding: EdgeInsets.all(15),
+          child: ElevatedButton(
+            style: ElevatedButton.styleFrom(
+              padding: EdgeInsets.all(15),
+            ),
             child: Text(
               word != null ? word[myProvider.lang] : '',
               style: TextStyle(
@@ -227,6 +225,7 @@ class GamePickImagePage extends StatelessWidget {
                 color: Colors.white,
               ),
             ),
+            onPressed: null,
           ),
         ),
       ],
@@ -239,9 +238,12 @@ class GamePickImagePage extends StatelessWidget {
       mainAxisAlignment: MainAxisAlignment.center,
       children: [
         Container(
-          child: RaisedButton(
-            color: Colors.teal,
-            padding: EdgeInsets.all(35),
+          child: ElevatedButton(
+            style: ElevatedButton.styleFrom(
+              onPrimary: Colors.teal,
+              primary: Colors.teal,
+              padding: EdgeInsets.all(35),
+            ),
             child: Text(
               "🇫🇷",
               style: TextStyle(
@@ -254,9 +256,12 @@ class GamePickImagePage extends StatelessWidget {
         ),
         SizedBox(height: 15),
         Container(
-          child: RaisedButton(
-            color: Colors.teal,
-            padding: EdgeInsets.all(35),
+          child: ElevatedButton(
+            style: ElevatedButton.styleFrom(
+              onPrimary: Colors.teal,
+              primary: Colors.teal,
+              padding: EdgeInsets.all(35),
+            ),
             child: Text(
               "🇬🇧",
               style: TextStyle(
@@ -294,9 +299,9 @@ class GamePickImagePage extends StatelessWidget {
           children: <Widget>[
             _buildTextItemBlock(_myProvider),
             SizedBox(height: 2),
-            ((_myProvider.word == null) || (_myProvider.word['key'] == '')) ?
-            _buildStartGameBlock(_myProvider) :
-            _buildScoreContainer(_myProvider),
+            ((_myProvider.word == null) || (_myProvider.word['key'] == ''))
+                ? _buildStartGameBlock(_myProvider)
+                : _buildScoreContainer(_myProvider),
             SizedBox(height: 2),
             _buildImageItemsBlock(_myProvider),
           ],
@@ -313,9 +318,9 @@ class GamePickImagePage extends StatelessWidget {
             height: (MediaQuery.of(context).size.height),
             width: (MediaQuery.of(context).size.width),
             child: pageContent,
-          )
-        )
-      )
+          ),
+        ),
+      ),
     );
   }
 }
diff --git a/lib/screens/game_pick_word.dart b/lib/screens/game_pick_word.dart
index 9ef2cc9..9b1aa62 100644
--- a/lib/screens/game_pick_word.dart
+++ b/lib/screens/game_pick_word.dart
@@ -5,8 +5,8 @@ import '../provider/data.dart';
 import '../utils/random_pick_data.dart';
 
 class GamePickWordPage extends StatelessWidget {
-  int _countWords = 4;
-  int _countImages = 4;
+  final int _countWords = 4;
+  final int _countImages = 4;
 
   Future<void> startGame(Data myProvider, String lang) async {
     await resetGame(myProvider);
@@ -46,13 +46,9 @@ class GamePickWordPage extends StatelessWidget {
       }
       attempts++;
 
-      if (
-        ((words != null) && (words.length == _countWords))
-        &&
-        ((images != null) && (images.length == _countImages))
-        &&
-        !myProvider.isRecentlyPicked(word['key'])
-      ) {
+      if (((words != null) && (words.length == _countWords)) &&
+          ((images != null) && (images.length == _countImages)) &&
+          !myProvider.isRecentlyPicked(word['key'])) {
         myProvider.updateWord = word;
         myProvider.updateOtherWords = words.skip(1).toList();
         myProvider.updateImages = images;
@@ -136,7 +132,7 @@ class GamePickWordPage extends StatelessWidget {
 
     String imageAsset = 'assets/placeholder.png';
     if (image != null) {
-        imageAsset = 'assets/images/'+image;
+      imageAsset = 'assets/images/' + image;
     }
 
     return Container(
@@ -149,11 +145,10 @@ class GamePickWordPage extends StatelessWidget {
         ),
       ),
       child: Image(
-        image: AssetImage(imageAsset),
-        width: imageSize,
-        height: imageSize,
-        fit: BoxFit.fill
-      ),
+          image: AssetImage(imageAsset),
+          width: imageSize,
+          height: imageSize,
+          fit: BoxFit.fill),
     );
   }
 
@@ -197,8 +192,10 @@ class GamePickWordPage extends StatelessWidget {
           width: 6,
         ),
       ),
-      child: FlatButton(
-        padding: EdgeInsets.all(15),
+      child: TextButton(
+        style: TextButton.styleFrom(
+          padding: EdgeInsets.all(15),
+        ),
         child: Text(
           word != null ? word[myProvider.lang] : '',
           style: TextStyle(
@@ -207,7 +204,9 @@ class GamePickWordPage extends StatelessWidget {
             color: Colors.white,
           ),
         ),
-        onPressed: () { checkWord(myProvider, word); },
+        onPressed: () {
+          checkWord(myProvider, word);
+        },
       ),
     );
   }
@@ -262,9 +261,12 @@ class GamePickWordPage extends StatelessWidget {
       mainAxisAlignment: MainAxisAlignment.center,
       children: [
         Container(
-          child: RaisedButton(
-            color: Colors.teal,
-            padding: EdgeInsets.all(35),
+          child: ElevatedButton(
+            style: ElevatedButton.styleFrom(
+              onPrimary: Colors.teal,
+              primary: Colors.teal,
+              padding: EdgeInsets.all(35),
+            ),
             child: Text(
               "🇫🇷",
               style: TextStyle(
@@ -277,9 +279,12 @@ class GamePickWordPage extends StatelessWidget {
         ),
         SizedBox(height: 15),
         Container(
-          child: RaisedButton(
-            color: Colors.teal,
-            padding: EdgeInsets.all(35),
+          child: ElevatedButton(
+            style: ElevatedButton.styleFrom(
+              onPrimary: Colors.teal,
+              primary: Colors.teal,
+              padding: EdgeInsets.all(35),
+            ),
             child: Text(
               "🇬🇧",
               style: TextStyle(
@@ -317,9 +322,9 @@ class GamePickWordPage extends StatelessWidget {
           children: <Widget>[
             _buildImageItemsBlock(_myProvider.images),
             SizedBox(height: 2),
-            ((_myProvider.word == null) || (_myProvider.word['key'] == '')) ?
-            _buildStartGameBlock(_myProvider) :
-            _buildScoreContainer(_myProvider),
+            ((_myProvider.word == null) || (_myProvider.word['key'] == ''))
+                ? _buildStartGameBlock(_myProvider)
+                : _buildScoreContainer(_myProvider),
             SizedBox(height: 2),
             _buildTextItemsBlock(_myProvider),
           ],
@@ -336,9 +341,9 @@ class GamePickWordPage extends StatelessWidget {
             height: (MediaQuery.of(context).size.height),
             width: (MediaQuery.of(context).size.width),
             child: pageContent,
-          )
-        )
-      )
+          ),
+        ),
+      ),
     );
   }
 }
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 75c3bd2..bfe6a84 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -34,14 +34,17 @@ class Home extends StatelessWidget {
             width: 8,
           ),
         ),
-        child: FlatButton(
-          color: color,
-          padding: EdgeInsets.all(15),
+        child: TextButton(
+          style: TextButton.styleFrom(
+            padding: EdgeInsets.all(15),
+            primary: color,
+            backgroundColor: color,
+          ),
           child: Image(
             image: AssetImage(imageAsset),
             width: imageSize,
             height: imageSize,
-            fit: BoxFit.fill
+            fit: BoxFit.fill,
           ),
           onPressed: () {
             resetGame(_myProvider);
@@ -54,7 +57,6 @@ class Home extends StatelessWidget {
       );
     }
 
-
     return Scaffold(
       backgroundColor: Colors.blue,
       body: Center(
diff --git a/lib/utils/random_pick_data.dart b/lib/utils/random_pick_data.dart
index 553bba6..9a21081 100644
--- a/lib/utils/random_pick_data.dart
+++ b/lib/utils/random_pick_data.dart
@@ -1,6 +1,4 @@
 import 'dart:async';
-import 'dart:convert';
-import 'package:flutter/services.dart';
 
 import 'random_pick_word.dart';
 import 'random_pick_image.dart';
@@ -11,11 +9,12 @@ class RandomPickData {
   List _words;
 
   init(String lang, int wordsCount, int imagesPerWordCount) async {
-    _words = new List(wordsCount);
+    _words = List.filled(wordsCount, []);
     await getWordsAndImages(lang, wordsCount, imagesPerWordCount);
   }
 
-  Future<void> getWordsAndImages(String lang, int wordsCount, int imagesPerWordCount) async {
+  Future<void> getWordsAndImages(
+      String lang, int wordsCount, int imagesPerWordCount) async {
     RandomPickWord randomPickWord;
     RandomPickImage randomPickImage;
 
@@ -28,13 +27,13 @@ class RandomPickData {
       pickedWords = randomPickWord.words;
 
       for (var i = 0; i < pickedWords.length; i++) {
-          Map word = pickedWords[i];
+        Map word = pickedWords[i];
 
-          randomPickImage = RandomPickImage();
-          await randomPickImage.init(word['key'], imagesPerWordCount);
-          if (randomPickImage.images != null) {
-            pickedWords[i]['images'] = randomPickImage.images;
-          }
+        randomPickImage = RandomPickImage();
+        await randomPickImage.init(word['key'], imagesPerWordCount);
+        if (randomPickImage.images != null) {
+          pickedWords[i]['images'] = randomPickImage.images;
+        }
       }
     }
 
diff --git a/lib/utils/random_pick_image.dart b/lib/utils/random_pick_image.dart
index 1bbf6a4..a726960 100644
--- a/lib/utils/random_pick_image.dart
+++ b/lib/utils/random_pick_image.dart
@@ -8,7 +8,7 @@ class RandomPickImage {
   List _images;
 
   init(String word, int count) async {
-    _images = new List(count);
+    _images = List.filled(count, []);
     await imageFromLocalFile(word, count);
   }
 
@@ -25,7 +25,7 @@ class RandomPickImage {
 
     // Check we have enough images
     if ((imageList == null) || (imageList.length < count)) {
-      print('Not enough images in list for word "'+word+'".');
+      print('Not enough images in list for word "' + word + '".');
       _images = [];
     } else {
       // Randomize images list
diff --git a/lib/utils/random_pick_word.dart b/lib/utils/random_pick_word.dart
index 169c239..eb4cfbc 100644
--- a/lib/utils/random_pick_word.dart
+++ b/lib/utils/random_pick_word.dart
@@ -8,7 +8,7 @@ class RandomPickWord {
   List _words;
 
   init(String lang, int count) async {
-    _words = new List(count);
+    _words = List.filled(count, []);
     await wordFromLocalFile(lang, count);
   }
 
@@ -29,7 +29,7 @@ class RandomPickWord {
       _words = [];
     } else {
       // Remove empty words
-      wordList.removeWhere((value) => ((value.containsKey(lang) == false) || (value[lang] == '')));
+      wordList.removeWhere((w) => ((w.containsKey(lang) == false) || (w[lang] == '')));
 
       // Randomize words list
       wordList.shuffle();
diff --git a/pubspec.lock b/pubspec.lock
index 6f3d123..15e5564 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -42,14 +42,14 @@ packages:
       name: collection
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.15.0"
+    version: "1.16.0"
   fake_async:
     dependency: transitive
     description:
       name: fake_async
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.2.0"
+    version: "1.3.0"
   flutter:
     dependency: "direct main"
     description: flutter
@@ -87,7 +87,7 @@ packages:
       name: material_color_utilities
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.1.3"
+    version: "0.1.4"
   meta:
     dependency: transitive
     description:
@@ -108,7 +108,7 @@ packages:
       name: path
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.8.0"
+    version: "1.8.1"
   provider:
     dependency: "direct main"
     description:
@@ -127,7 +127,7 @@ packages:
       name: source_span
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.8.1"
+    version: "1.8.2"
   stack_trace:
     dependency: transitive
     description:
@@ -162,7 +162,7 @@ packages:
       name: test_api
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.4.8"
+    version: "0.4.9"
   typed_data:
     dependency: transitive
     description:
@@ -176,7 +176,7 @@ packages:
       name: vector_math
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "2.1.1"
+    version: "2.1.2"
 sdks:
-  dart: ">=2.14.0 <3.0.0"
+  dart: ">=2.17.0-0 <3.0.0"
   flutter: ">=1.16.0"
diff --git a/test/widget_test.dart b/test/widget_test.dart
deleted file mode 100644
index c0f128f..0000000
--- a/test/widget_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// This is a basic Flutter widget test.
-//
-// To perform an interaction with a widget in your test, use the WidgetTester
-// utility that Flutter provides. For example, you can send tap and scroll
-// gestures. You can also use WidgetTester to find child widgets in the widget
-// tree, read text, and verify that the values of widget properties are correct.
-
-import 'package:flutter/material.dart';
-import 'package:flutter_test/flutter_test.dart';
-
-import 'package:wordguessing/main.dart';
-
-void main() {
-}
-- 
GitLab