diff --git a/android/gradle.properties b/android/gradle.properties
index f949a3ee4d49652f56c38f00cbeec75795482545..7a71998872336cfce652ed02b817b87719a7ef17 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=1.2.20
-app.versionCode=26
+app.versionName=1.2.21
+app.versionCode=27
diff --git a/fastlane/metadata/android/en-US/changelogs/27.txt b/fastlane/metadata/android/en-US/changelogs/27.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2bbe4a913393aeeceb8a7d8c9812849dd191a35e
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/27.txt
@@ -0,0 +1 @@
+Upgrade Flutter framework and dependencies, clean some code
diff --git a/fastlane/metadata/android/fr-FR/changelogs/27.txt b/fastlane/metadata/android/fr-FR/changelogs/27.txt
new file mode 100644
index 0000000000000000000000000000000000000000..864ad0a1475fcf2e546cb12d3c49c1d895ef43b2
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/27.txt
@@ -0,0 +1 @@
+Mise à jour du framework Flutter et de ses dépendances, nettoyage de code
diff --git a/lib/main.dart b/lib/main.dart
index c107caae1da48a16dd6b5a14e59e07985acfedbe..eeded49d3a6bacdbc3c0985afba439c48505d709 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -16,19 +16,21 @@ class MyApp extends StatelessWidget {
   Widget build(BuildContext context) {
     return ChangeNotifierProvider(
       create: (BuildContext context) => Data(),
-      child: Consumer<Data>(builder: (context, data, child) {
-        return MaterialApp(
-          debugShowCheckedModeBanner: false,
-          theme: ThemeData(
-            primaryColor: Colors.blue,
-            visualDensity: VisualDensity.adaptivePlatformDensity,
-          ),
-          home: Home(),
-          routes: {
-            Home.id: (context) => Home(),
-          },
-        );
-      }),
+      child: Consumer<Data>(
+        builder: (context, data, child) {
+          return MaterialApp(
+            debugShowCheckedModeBanner: false,
+            theme: ThemeData(
+              primaryColor: Colors.blue,
+              visualDensity: VisualDensity.adaptivePlatformDensity,
+            ),
+            home: Home(),
+            routes: {
+              Home.id: (context) => Home(),
+            },
+          );
+        },
+      ),
     );
   }
 }
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 781080eb21dfbc6daea30c60699309824d2fd2d5..65e64344be200cffd8e4f5ac3fec5c2cce01945b 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -1,7 +1,6 @@
 import 'package:flutter/material.dart';
 import 'package:provider/provider.dart';
 
-import 'dart:math';
 import 'dart:async';
 
 import '../provider/data.dart';
@@ -11,10 +10,8 @@ import '../utils/random_pick_letter.dart';
 class Home extends StatelessWidget {
   static const String id = 'home';
 
-  String _randomLetter = '';
-  String _randomCategory = '';
-  Timer _timer;
-  int _countdownStart = 10;
+  static Timer _timer;
+  static int _countdownStart = 10;
 
   Future<void> startMiniGame(Data myProvider) async {
     if (myProvider.countdown <= 0) {
@@ -44,7 +41,6 @@ class Home extends StatelessWidget {
     );
   }
 
-  @override
   void dispose() {
     _timer.cancel();
   }
@@ -56,11 +52,8 @@ class Home extends StatelessWidget {
     do {
       randomPickCategory = RandomPickCategory();
       await randomPickCategory.init();
-      if (
-        randomPickCategory.category != null
-        &&
-        !myProvider.isCategoryRecentlyPicked(randomPickCategory.category)
-      ) {
+      if (randomPickCategory.category != null &&
+          !myProvider.isCategoryRecentlyPicked(randomPickCategory.category)) {
         myProvider.updateCategory(randomPickCategory.category);
         myProvider.setSearchingCategory(false);
         break;
@@ -76,11 +69,8 @@ class Home extends StatelessWidget {
     do {
       randomPickLetter = RandomPickLetter();
       await randomPickLetter.init();
-      if (
-        randomPickLetter.letter != null
-        &&
-        !myProvider.isLetterRecentlyPicked(randomPickLetter.letter)
-      ) {
+      if (randomPickLetter.letter != null &&
+          !myProvider.isLetterRecentlyPicked(randomPickLetter.letter)) {
         myProvider.updateLetter(randomPickLetter.letter);
         myProvider.setSearchingLetter(false);
         break;
@@ -95,7 +85,8 @@ class Home extends StatelessWidget {
     return hslDark.toColor();
   }
 
-  Container mainLetterButtonContainer(Data myProvider, Color backgroundColor, double borderWidth) {
+  Container mainLetterButtonContainer(
+      Data myProvider, Color backgroundColor, double borderWidth) {
     Color borderColor = darken(backgroundColor);
 
     return Container(
@@ -109,7 +100,7 @@ class Home extends StatelessWidget {
           width: borderWidth,
         ),
       ),
-      child: FlatButton(
+      child: TextButton(
         onPressed: () => pickLetter(myProvider),
         child: Text(
           myProvider.letter == '' ? "🔀" : myProvider.letter,
@@ -160,49 +151,48 @@ class Home extends StatelessWidget {
     );
   }
 
-  Container _buildPickedLetterContainer(Data myProvider, Color backgroundColor, double borderWidth) {
+  Container _buildPickedLetterContainer(
+      Data myProvider, Color backgroundColor, double borderWidth) {
     int previousLettersCountToShow = 3;
 
-    List <Widget> cells = [];
+    List<Widget> cells = [];
 
     // Add previous letters blocks
     for (var i = 0; i < previousLettersCountToShow; i++) {
       cells.add(TableCell(
         verticalAlignment: TableCellVerticalAlignment.middle,
-        child: previousLetterBlockContainer(myProvider, previousLettersCountToShow - i, true)
+        child: previousLetterBlockContainer(myProvider, previousLettersCountToShow - i, true),
       ));
     }
 
     // Add current letter block
     cells.add(TableCell(
       verticalAlignment: TableCellVerticalAlignment.middle,
-      child: mainLetterButtonContainer(myProvider, backgroundColor, borderWidth)
+      child: mainLetterButtonContainer(myProvider, backgroundColor, borderWidth),
     ));
 
     // Pad with empty blocks to keep symetrical layout
     for (var i = 0; i < previousLettersCountToShow; i++) {
       cells.add(TableCell(
         verticalAlignment: TableCellVerticalAlignment.middle,
-        child: previousLetterBlockContainer(myProvider, i + 1, false)
+        child: previousLetterBlockContainer(myProvider, i + 1, false),
       ));
     }
 
     return Container(
       margin: EdgeInsets.all(2),
       padding: EdgeInsets.all(2),
-
       child: Table(
         defaultColumnWidth: IntrinsicColumnWidth(),
         children: [
-          TableRow(
-            children: cells
-          ),
-        ]
-      )
+          TableRow(children: cells),
+        ],
+      ),
     );
   }
 
-  Container _buildPickedCategoryContainer(Data myProvider, Color backgroundColor, double borderWidth) {
+  Container _buildPickedCategoryContainer(
+      Data myProvider, Color backgroundColor, double borderWidth) {
     Color borderColor = darken(backgroundColor);
 
     return Container(
@@ -221,7 +211,7 @@ class Home extends StatelessWidget {
                 width: borderWidth,
               ),
             ),
-            child: FlatButton(
+            child: TextButton(
               onPressed: () => pickCategory(myProvider),
               child: Text(
                 myProvider.category == '' ? "🔀" : myProvider.category,
@@ -239,7 +229,8 @@ class Home extends StatelessWidget {
     );
   }
 
-  Container _buildMiniGameContainer(Data myProvider, Color backgroundColor, double borderWidth) {
+  Container _buildMiniGameContainer(
+      Data myProvider, Color backgroundColor, double borderWidth) {
     Color borderColor = darken(backgroundColor);
 
     Color countDownColor = Colors.black;
@@ -263,7 +254,7 @@ class Home extends StatelessWidget {
                 width: borderWidth,
               ),
             ),
-            child: FlatButton(
+            child: TextButton(
               onPressed: (myProvider.countdown >= 0) ? null : () => startMiniGame(myProvider),
               child: Text(
                 (myProvider.countdown >= 0) ? myProvider.countdown.toString() : '🎲',
diff --git a/lib/utils/random_pick_category.dart b/lib/utils/random_pick_category.dart
index 7ef32baaaab093aaf39bc5ce33352bc21d6e18d7..b8d31ed5720d76c6960b7e777a44d14ab1f21007 100644
--- a/lib/utils/random_pick_category.dart
+++ b/lib/utils/random_pick_category.dart
@@ -19,7 +19,6 @@ class RandomPickCategory {
       jsonString = await rootBundle.loadString('assets/files/categories-fr.json');
       final jsonResponse = await json.decode(jsonString);
       var categoryList = jsonResponse[jsonResponse.keys.toList().join()];
-      int randomCategoryIndex = random.nextInt(categoryList.length);
       String category = categoryList[random.nextInt(categoryList.length)];
       _category = category ?? 'UNEXPECTED ERROR';
     } catch (e) {
diff --git a/lib/utils/random_pick_letter.dart b/lib/utils/random_pick_letter.dart
index 15635c9b01782e79e8474635a5d511b3dc44ba54..ea72e7a48e5eae54d1b6def4b2c7a0d1071d0303 100644
--- a/lib/utils/random_pick_letter.dart
+++ b/lib/utils/random_pick_letter.dart
@@ -1,6 +1,4 @@
 import 'dart:async';
-import 'dart:convert';
-import 'package:flutter/services.dart';
 import 'dart:math' show Random;
 
 class RandomPickLetter {
diff --git a/pubspec.lock b/pubspec.lock
index 150de00337b04766580159c717989660b753d56d..b923188b673aac1c823c8ee502c6cec579023247 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -7,7 +7,7 @@ packages:
       name: async
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "2.8.2"
+    version: "2.9.0"
   boolean_selector:
     dependency: transitive
     description:
@@ -21,21 +21,14 @@ packages:
       name: characters
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.2.0"
-  charcode:
-    dependency: transitive
-    description:
-      name: charcode
-      url: "https://pub.dartlang.org"
-    source: hosted
-    version: "1.3.1"
+    version: "1.2.1"
   clock:
     dependency: transitive
     description:
       name: clock
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.1.0"
+    version: "1.1.1"
   collection:
     dependency: transitive
     description:
@@ -49,7 +42,7 @@ packages:
       name: fake_async
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.3.0"
+    version: "1.3.1"
   flutter:
     dependency: "direct main"
     description: flutter
@@ -66,21 +59,21 @@ packages:
       name: matcher
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.12.11"
+    version: "0.12.12"
   material_color_utilities:
     dependency: transitive
     description:
       name: material_color_utilities
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.1.4"
+    version: "0.1.5"
   meta:
     dependency: transitive
     description:
       name: meta
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.7.0"
+    version: "1.8.0"
   nested:
     dependency: transitive
     description:
@@ -94,7 +87,7 @@ packages:
       name: path
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.8.1"
+    version: "1.8.2"
   provider:
     dependency: "direct main"
     description:
@@ -113,7 +106,7 @@ packages:
       name: source_span
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.8.2"
+    version: "1.9.0"
   stack_trace:
     dependency: transitive
     description:
@@ -134,21 +127,21 @@ packages:
       name: string_scanner
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.1.0"
+    version: "1.1.1"
   term_glyph:
     dependency: transitive
     description:
       name: term_glyph
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.2.0"
+    version: "1.2.1"
   test_api:
     dependency: transitive
     description:
       name: test_api
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.4.9"
+    version: "0.4.12"
   vector_math:
     dependency: transitive
     description:
diff --git a/test/widget_test.dart b/test/widget_test.dart
deleted file mode 100644
index a36bc956a7dd4c3066138b4b8132629f5a6cd2fc..0000000000000000000000000000000000000000
--- 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:petitbac/main.dart';
-
-void main() {
-}