diff --git a/android/gradle.properties b/android/gradle.properties
index c8bbff9bd599a7c3ffbe76de5a61ead3de90631a..4d8dcd2635bb8701e212029096d53cf5dc060e45 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.39
-app.versionCode=39
+app.versionName=0.0.40
+app.versionCode=40
diff --git a/fastlane/metadata/android/en-US/changelogs/40.txt b/fastlane/metadata/android/en-US/changelogs/40.txt
new file mode 100644
index 0000000000000000000000000000000000000000..184075efeed3355b2b22223b1014cc347992c452
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/40.txt
@@ -0,0 +1 @@
+Clean some code, remove deprecations
diff --git a/fastlane/metadata/android/fr-FR/changelogs/40.txt b/fastlane/metadata/android/fr-FR/changelogs/40.txt
new file mode 100644
index 0000000000000000000000000000000000000000..387510b68e0fb91391aca3c32a6ffa08627ea00e
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/40.txt
@@ -0,0 +1 @@
+Nettoyage de code, correction des deprectations
diff --git a/lib/entities/moving_tile.dart b/lib/entities/moving_tile.dart
index cdcc109e05ea29f95426e051c4d55128f406bca2..63dc084c84f9d56eae048396e85f7a78774d4a73 100644
--- a/lib/entities/moving_tile.dart
+++ b/lib/entities/moving_tile.dart
@@ -1,5 +1,4 @@
 import 'package:flutter/material.dart';
-import 'package:provider/provider.dart';
 
 import 'tile.dart';
 import '../provider/data.dart';
@@ -8,19 +7,8 @@ class MovingTile extends Tile {
   int currentCol;
   int currentRow;
 
-  MovingTile(
-    image,
-    size,
-    originalCol,
-    originalRow,
-    this.currentCol,
-    this.currentRow
-  ): super(
-    image,
-    size,
-    originalCol,
-    originalRow
-  );
+  MovingTile(image, size, originalCol, originalRow, this.currentCol, this.currentRow)
+      : super(image, size, originalCol, originalRow);
 
   Container _tileWidget() {
     return Container(
@@ -32,62 +20,51 @@ class MovingTile extends Tile {
         ),
       ),
       child: Image(
-        image: this.image.image,
-        width: this.size,
-        height: this.size,
-        fit: BoxFit.fill
-      ),
+          image: this.image.image, width: this.size, height: this.size, fit: BoxFit.fill),
     );
   }
 
   Container widget(Data myProvider) {
     return Container(
-      child: DragTarget<List<int>>(
-        builder: (
-          BuildContext context,
-          List<dynamic> accepted,
-          List<dynamic> rejected,
-        ) {
-          return Container(
-            height: this.size,
-            width: this.size,
-            color: Colors.cyan,
-            child: Draggable<List<int>>(
-              data: [
-                this.currentCol,
-                this.currentRow,
-              ],
+        child: DragTarget<List<int>>(
+      builder: (
+        BuildContext context,
+        List<dynamic> accepted,
+        List<dynamic> rejected,
+      ) {
+        return Container(
+          height: this.size,
+          width: this.size,
+          color: Colors.cyan,
+          child: Draggable<List<int>>(
+            data: [
+              this.currentCol,
+              this.currentRow,
+            ],
 
-              // Widget when draggable is stationary
-              child: this._tileWidget(),
+            // Widget when draggable is stationary
+            child: this._tileWidget(),
 
-              // Widget when draggable is being dragged
-              feedback: this._tileWidget(),
+            // Widget when draggable is being dragged
+            feedback: this._tileWidget(),
 
-              // Widget to display on original place when being dragged
-              childWhenDragging: Container(
-                height: this.size,
-                width: this.size,
-                color: Colors.pinkAccent,
-              ),
+            // Widget to display on original place when being dragged
+            childWhenDragging: Container(
+              height: this.size,
+              width: this.size,
+              color: Colors.pinkAccent,
             ),
-          );
-        },
-        onAccept: (List<int> data) {
-          myProvider.swapTiles(
-            [this.currentCol, this.currentRow],
-            data
-          );
-        },
-      )
-    );
+          ),
+        );
+      },
+      onAccept: (List<int> data) {
+        myProvider.swapTiles([this.currentCol, this.currentRow], data);
+      },
+    ));
   }
 
   bool isCorrect() {
-    return (
-      (this.currentRow == this.originalRow)
-      &&
-      (this.currentCol == this.originalCol)
-    );
+    return ((this.currentRow == this.originalRow) &&
+        (this.currentCol == this.originalCol));
   }
 }
diff --git a/lib/entities/tile.dart b/lib/entities/tile.dart
index cab77ecbcf4f00258fedf49a64c488916dc8cba0..6e340c783f1e938e324292284a8568ed3fc62ff6 100644
--- a/lib/entities/tile.dart
+++ b/lib/entities/tile.dart
@@ -1,24 +1,25 @@
 import 'package:flutter/material.dart';
-import 'package:provider/provider.dart';
 
 import '../provider/data.dart';
 
-class Tile{
+class Tile {
   final Image image;
   final double size;
   final int originalCol;
   final int originalRow;
 
   Tile(
-    @required this.image,
-    @required this.size,
-    @required this.originalCol,
-    @required this.originalRow,
+    this.image,
+    this.size,
+    this.originalCol,
+    this.originalRow,
   );
 
   Container widget(Data myProvider) {
     return Container();
   }
 
-  bool isCorrect() {}
+  bool isCorrect() {
+    return false;
+  }
 }
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index 8255353a98e676e00921de6e8eaf22768a0e98fd..362981de42bc7f4be8d7c970970ce0f1d50bf247 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -3,7 +3,6 @@ import 'package:flutter/foundation.dart';
 import '../entities/moving_tile.dart';
 
 class Data extends ChangeNotifier {
-
   // application configuration
   int _tilesCount = 4;
 
@@ -59,8 +58,10 @@ class Data extends ChangeNotifier {
   }
 
   void swapTiles(List<int> tile1, List<int> tile2) {
-    int indexTile1 = _tiles.indexWhere((tile) => ((tile.currentCol == tile1[0]) && (tile.currentRow == tile1[1])));
-    int indexTile2 = _tiles.indexWhere((tile) => ((tile.currentCol == tile2[0]) && (tile.currentRow == tile2[1])));
+    int indexTile1 = _tiles.indexWhere(
+        (tile) => ((tile.currentCol == tile1[0]) && (tile.currentRow == tile1[1])));
+    int indexTile2 = _tiles.indexWhere(
+        (tile) => ((tile.currentCol == tile2[0]) && (tile.currentRow == tile2[1])));
 
     MovingTile swap = _tiles[indexTile1];
     _tiles[indexTile1] = _tiles[indexTile2];
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 783b1b834c6e2480fdf1500ea66371bd1d525884..9becc8c2a94ad6d77ab668d9c38f2567273b57c2 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -15,9 +15,9 @@ import '../utils/get_images_list.dart';
 class Home extends StatelessWidget {
   static const String id = 'home';
 
-  Color themePrimaryColor = Colors.blue;
-  double _tipImageSize = 100;
-  int _selectImageColumnsCount = 3;
+  final Color themePrimaryColor = Colors.blue;
+  final double _tipImageSize = 100;
+  final int _selectImageColumnsCount = 3;
 
   Future<void> resetGame(Data myProvider) async {
     myProvider.updateImage = '';
@@ -29,7 +29,7 @@ class Home extends StatelessWidget {
   }
 
   String getImageAssetName(String imageCode) {
-    return 'assets/images/'+imageCode+'.png';
+    return 'assets/images/' + imageCode + '.png';
   }
 
   Future<void> getImagesList(Data myProvider) async {
@@ -42,10 +42,11 @@ class Home extends StatelessWidget {
     }
   }
 
-  Future<void> selectImage(Data myProvider, String imageCode, double tileImageSize) async {
+  Future<void> selectImage(
+      Data myProvider, String imageCode, double tileImageSize) async {
     myProvider.updateIsShufflingBoard = true;
     myProvider.updateImage = imageCode;
-    Timer timer = new Timer(new Duration(seconds: 1), () {
+    new Timer(new Duration(seconds: 1), () {
       splitImageInTiles(myProvider, tileImageSize);
     });
   }
@@ -58,8 +59,10 @@ class Home extends StatelessWidget {
 
   Container _buildImageSelectorItem(Data myProvider, String image, double tileImageSize) {
     return Container(
-      child: FlatButton(
-        padding: EdgeInsets.all(2),
+      child: TextButton(
+        style: TextButton.styleFrom(
+          padding: EdgeInsets.all(2),
+        ),
         child: Container(
           decoration: BoxDecoration(
             borderRadius: BorderRadius.circular(4),
@@ -68,12 +71,11 @@ class Home extends StatelessWidget {
               width: 4,
             ),
           ),
-          child: Image(
-            image: AssetImage(getImageAssetName(image)),
-            fit: BoxFit.fill
-          ),
+          child: Image(image: AssetImage(getImageAssetName(image)), fit: BoxFit.fill),
         ),
-        onPressed: () { selectImage(myProvider, image, tileImageSize); },
+        onPressed: () {
+          selectImage(myProvider, image, tileImageSize);
+        },
       ),
     );
   }
@@ -91,22 +93,19 @@ class Home extends StatelessWidget {
           Table(
             defaultColumnWidth: IntrinsicColumnWidth(),
             children: [
-              for (var imageIndex = 0; imageIndex < images.length; imageIndex += _selectImageColumnsCount)
-                TableRow(
-                  children: [
-                    for (var columnIndex = 0; columnIndex < _selectImageColumnsCount; columnIndex++)
-                      Column(
-                        children: [
-                          if (imageIndex + columnIndex < images.length)
-                            _buildImageSelectorItem(
-                              myProvider,
-                              images[imageIndex + columnIndex],
-                              tileImageSize
-                            )
-                        ]
-                      ),
-                  ]
-                ),
+              for (var imageIndex = 0;
+                  imageIndex < images.length;
+                  imageIndex += _selectImageColumnsCount)
+                TableRow(children: [
+                  for (var columnIndex = 0;
+                      columnIndex < _selectImageColumnsCount;
+                      columnIndex++)
+                    Column(children: [
+                      if (imageIndex + columnIndex < images.length)
+                        _buildImageSelectorItem(
+                            myProvider, images[imageIndex + columnIndex], tileImageSize)
+                    ]),
+                ]),
             ],
           ),
         ],
@@ -114,8 +113,9 @@ class Home extends StatelessWidget {
     );
   }
 
-  FlatButton _buildTilesetSizeSelectorItem(Data myProvider, int value) {
-    String assetName = 'assets/icons/difficulty_' + value.toString() + 'x' + value.toString() + '.png';
+  TextButton _buildTilesetSizeSelectorItem(Data myProvider, int value) {
+    String assetName =
+        'assets/icons/difficulty_' + value.toString() + 'x' + value.toString() + '.png';
 
     Color borderColor = themePrimaryColor;
 
@@ -123,7 +123,7 @@ class Home extends StatelessWidget {
       borderColor = Colors.white;
     }
 
-    return FlatButton(
+    return TextButton(
       child: Container(
         decoration: BoxDecoration(
           borderRadius: BorderRadius.circular(4),
@@ -133,12 +133,11 @@ class Home extends StatelessWidget {
           ),
         ),
         margin: EdgeInsets.all(8),
-        child: Image(
-          image: AssetImage(assetName),
-          fit: BoxFit.fill
-        ),
+        child: Image(image: AssetImage(assetName), fit: BoxFit.fill),
       ),
-      onPressed: () { myProvider.updateTilesCount = value; },
+      onPressed: () {
+        myProvider.updateTilesCount = value;
+      },
     );
   }
 
@@ -168,30 +167,24 @@ class Home extends StatelessWidget {
 
   Future<void> splitImageInTiles(Data myProvider, double tileImageSize) async {
     String imageAsset = getImageAssetName(myProvider.image);
-    Uint8List imageData = (await rootBundle.load(imageAsset))
-      .buffer
-      .asUint8List();
+    Uint8List imageData = (await rootBundle.load(imageAsset)).buffer.asUint8List();
     imglib.Image image = imglib.decodeImage(imageData);
 
     int x = 0, y = 0;
     int width = (image.width / myProvider.tilesCount).round();
     int height = (image.height / myProvider.tilesCount).round();
 
-    List<MovingTile> tiles = List<MovingTile>();
+    List<MovingTile> tiles = [];
     for (int i = 0; i < myProvider.tilesCount; i++) {
       for (int j = 0; j < myProvider.tilesCount; j++) {
-        tiles.add(
-          MovingTile(
-            Image.memory(
-              imglib.encodeJpg(
-                imglib.copyCrop(image, x, y, width, height)
-              )
-            ),
-            tileImageSize,
-            j, i,
-            j, i,
-          )
-        );
+        tiles.add(MovingTile(
+          Image.memory(imglib.encodeJpg(imglib.copyCrop(image, x, y, width, height))),
+          tileImageSize,
+          j,
+          i,
+          j,
+          i,
+        ));
 
         x += width;
       }
@@ -219,21 +212,19 @@ class Home extends StatelessWidget {
     int tileIndex = 0;
 
     Table tileset = Table(
-      defaultColumnWidth: IntrinsicColumnWidth(),
-
-      border: TableBorder.all(
-        color: Colors.black,
-        style: BorderStyle.solid,
-        width: 2,
-      ),
-      children: [
-        for (var row = 0; row < myProvider.tilesCount; row++)
-          TableRow(children: [
-            for (var col = 0; col < myProvider.tilesCount; col++)
-              Column(children: [tiles[tileIndex++].widget(myProvider)]),
-          ]),
-      ]
-    );
+        defaultColumnWidth: IntrinsicColumnWidth(),
+        border: TableBorder.all(
+          color: Colors.black,
+          style: BorderStyle.solid,
+          width: 2,
+        ),
+        children: [
+          for (var row = 0; row < myProvider.tilesCount; row++)
+            TableRow(children: [
+              for (var col = 0; col < myProvider.tilesCount; col++)
+                Column(children: [tiles[tileIndex++].widget(myProvider)]),
+            ]),
+        ]);
 
     return Container(
       margin: EdgeInsets.all(8),
@@ -252,7 +243,7 @@ class Home extends StatelessWidget {
 
   Container _buildTipWidget(Data myProvider) {
     return Container(
-      child: FlatButton(
+      child: TextButton(
         child: Container(
           margin: EdgeInsets.all(4),
           padding: EdgeInsets.all(4),
@@ -265,15 +256,12 @@ class Home extends StatelessWidget {
             ),
           ),
           child: Image(
-            image: AssetImage(
-              myProvider.displayTipImage
-              ? getImageAssetName(myProvider.image)
-              : 'assets/ui/tip-hidden.png'
-            ),
-            width: _tipImageSize,
-            height: _tipImageSize,
-            fit: BoxFit.fill
-          ),
+              image: AssetImage(myProvider.displayTipImage
+                  ? getImageAssetName(myProvider.image)
+                  : 'assets/ui/tip-hidden.png'),
+              width: _tipImageSize,
+              height: _tipImageSize,
+              fit: BoxFit.fill),
         ),
         onPressed: () => toggleDisplayTipImage(myProvider),
       ),
@@ -288,7 +276,9 @@ class Home extends StatelessWidget {
         children: [
           _buildTilesetWidget(myProvider),
           SizedBox(height: 20),
-          _checkTilesetIsCleared(myProvider.tiles) ? _buildWinMessage(myProvider) : _buildTipWidget(myProvider),
+          _checkTilesetIsCleared(myProvider.tiles)
+              ? _buildWinMessage(myProvider)
+              : _buildTipWidget(myProvider),
         ],
       ),
     );
@@ -296,48 +286,30 @@ class Home extends StatelessWidget {
 
   Container _buildWinMessage(Data myProvider) {
     return Container(
-      margin: EdgeInsets.all(2),
-      padding: EdgeInsets.all(2),
-
-      child: Table(
-        defaultColumnWidth: IntrinsicColumnWidth(),
-        children: [
+        margin: EdgeInsets.all(2),
+        padding: EdgeInsets.all(2),
+        child: Table(defaultColumnWidth: IntrinsicColumnWidth(), children: [
           TableRow(
             children: [
-                Column(
-                  children: [
-                    Image(
-                      image: AssetImage('assets/icons/game_win.png'),
-                      fit: BoxFit.fill
-                    ),
-                  ]
-                ),
-                Column(
-                  children: [
-                    FlatButton(
-                      child: Container(
-                        child: Image(
-                          image: AssetImage('assets/icons/button_back.png'),
-                          fit: BoxFit.fill
-                        ),
-                      ),
-                      onPressed: () => resetGame(myProvider),
-                    ),
-                  ]
-                ),
-                Column(
-                  children: [
-                    Image(
-                      image: AssetImage('assets/icons/game_win.png'),
-                      fit: BoxFit.fill
-                    ),
-                  ]
+              Column(children: [
+                Image(image: AssetImage('assets/icons/game_win.png'), fit: BoxFit.fill),
+              ]),
+              Column(children: [
+                TextButton(
+                  child: Container(
+                    child: Image(
+                        image: AssetImage('assets/icons/button_back.png'),
+                        fit: BoxFit.fill),
+                  ),
+                  onPressed: () => resetGame(myProvider),
                 ),
+              ]),
+              Column(children: [
+                Image(image: AssetImage('assets/icons/game_win.png'), fit: BoxFit.fill),
+              ]),
             ],
           ),
-        ]
-      )
-    );
+        ]));
   }
 
   Container _buildShufflingIndicatorWidget() {
@@ -367,7 +339,8 @@ class Home extends StatelessWidget {
 
     var content;
 
-    double _tileImageSize = (MediaQuery.of(context).size.width - 70) / _myProvider.tilesCount;
+    double _tileImageSize =
+        (MediaQuery.of(context).size.width - 70) / _myProvider.tilesCount;
 
     if (_myProvider.isShufflingBoard) {
       content = _buildShufflingIndicatorWidget();
@@ -384,7 +357,7 @@ class Home extends StatelessWidget {
       _buildTilesetSizeSelectorItem(_myProvider, 3),
       _buildTilesetSizeSelectorItem(_myProvider, 4),
       _buildTilesetSizeSelectorItem(_myProvider, 5),
-      FlatButton(
+      TextButton(
         child: Container(
           decoration: BoxDecoration(
             borderRadius: BorderRadius.circular(4),
@@ -395,16 +368,14 @@ class Home extends StatelessWidget {
           ),
           margin: EdgeInsets.all(8),
           child: Image(
-            image: AssetImage('assets/icons/button_shuffle.png'),
-            fit: BoxFit.fill
-          ),
+              image: AssetImage('assets/icons/button_shuffle.png'), fit: BoxFit.fill),
         ),
         onPressed: () => shuffleImages(_myProvider),
       ),
     ];
 
     List<Widget> gameActions = [
-      FlatButton(
+      TextButton(
         child: Container(
           decoration: BoxDecoration(
             borderRadius: BorderRadius.circular(4),
@@ -414,25 +385,20 @@ class Home extends StatelessWidget {
             ),
           ),
           margin: EdgeInsets.all(8),
-          child: Image(
-            image: AssetImage('assets/icons/button_back.png'),
-            fit: BoxFit.fill
-          ),
+          child:
+              Image(image: AssetImage('assets/icons/button_back.png'), fit: BoxFit.fill),
         ),
         onPressed: () => resetGame(_myProvider),
       ),
     ];
 
     return Scaffold(
-      appBar: AppBar(
-        backgroundColor: themePrimaryColor,
-        actions: _myProvider.image == '' ? menuActions : gameActions,
-      ),
-      body: SafeArea(
-        child: Center(
-          child: content
+        appBar: AppBar(
+          backgroundColor: themePrimaryColor,
+          actions: _myProvider.image == '' ? menuActions : gameActions,
         ),
-      )
-    );
+        body: SafeArea(
+          child: Center(child: content),
+        ));
   }
 }
diff --git a/lib/utils/get_images_list.dart b/lib/utils/get_images_list.dart
index b0498796164a7da03a5cf5a7423526470b06e94b..e1221a98f734d20c44262eacbac39460bb2908b1 100644
--- a/lib/utils/get_images_list.dart
+++ b/lib/utils/get_images_list.dart
@@ -1,7 +1,6 @@
 import 'dart:async';
 import 'dart:convert';
 import 'package:flutter/services.dart';
-import 'dart:math' show Random;
 
 class GetImagesList {
   GetImagesList();
diff --git a/pubspec.lock b/pubspec.lock
index 5124f450dd9a8395f6b3b56c5273c96ab6b943ee..9fbac1cb2c42d5a5831c7d20b476b98478f8e075 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -49,7 +49,7 @@ packages:
       name: collection
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.15.0"
+    version: "1.16.0"
   crypto:
     dependency: transitive
     description:
@@ -63,7 +63,7 @@ packages:
       name: fake_async
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.2.0"
+    version: "1.3.0"
   flutter:
     dependency: "direct main"
     description: flutter
@@ -94,7 +94,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:
@@ -115,7 +115,7 @@ packages:
       name: path
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.8.0"
+    version: "1.8.1"
   petitparser:
     dependency: transitive
     description:
@@ -141,7 +141,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:
@@ -176,7 +176,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:
@@ -190,7 +190,7 @@ packages:
       name: vector_math
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "2.1.1"
+    version: "2.1.2"
   xml:
     dependency: transitive
     description:
@@ -199,5 +199,5 @@ packages:
     source: hosted
     version: "5.3.1"
 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 db18f731d9b771006442594b80413d4a8eaa10db..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:puzzlegame/main.dart';
-
-void main() {
-}