diff --git a/android/app/build.gradle b/android/app/build.gradle
index fdffea3276520e6d5fc3e698db3e7a417f10f603..cb7269328de31c5e8756003fbb588f643e77d5ca 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -16,7 +16,7 @@ if (gradlePropertiesFile.exists()) {
 
 def flutterRoot = localProperties.getProperty('flutter.sdk')
 if (flutterRoot == null) {
-    throw new FileNotFoundException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
 }
 
 def appVersionCode = gradleProperties.getProperty('app.versionCode')
@@ -41,14 +41,10 @@ if (keystorePropertiesFile.exists()) {
 android {
     compileSdkVersion 31
 
-    lintOptions {
-        disable 'InvalidPackage'
-    }
-
     defaultConfig {
         applicationId "org.benoitharrault.hangman"
-        minSdkVersion 21
-        targetSdkVersion 29
+        minSdkVersion 16
+        targetSdkVersion 30
         versionCode appVersionCode.toInteger()
         versionName appVersionName
         archivesBaseName = "$applicationId" + "_" + "$versionCode"
diff --git a/android/gradle.properties b/android/gradle.properties
index d1c2e86f101166e03a020eb5a16427e079fa70a4..a316c7ce348427549dc57861194389d019399733 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -2,5 +2,5 @@ org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
 android.enableR8=true
-app.versionName=1.2.4
-app.versionCode=15
+app.versionName=1.2.5
+app.versionCode=16
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index b224e4eb163180b61fe8c152af7e999e5e6b8e56..e624d6015a45d74b4e0028351d07a9758c91caaf 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -11,7 +11,7 @@ class Data extends ChangeNotifier {
   String _levelValue = defaultLevel;
 
   // randomization
-  String _secretWord;
+  String _secretWord = '';
   bool _searching = false;
   String _clue = '';
   List<String> _hiddenWord = [];
@@ -35,19 +35,24 @@ class Data extends ChangeNotifier {
 
   void _getPrefs() async {
     await _sharedPrefs.init();
-    _gameModeValue = _sharedPrefs.gameMode ??
-        onlineGameMode.keys.firstWhere((k) => onlineGameMode[k].contains(_sharedPrefs.level),
-            orElse: () => false);
-    _levelValue = onlineGameMode[_gameModeValue].contains(_sharedPrefs.level)
+
+    _gameModeValue = onlineGameMode.keys.firstWhere(
+        (k) => onlineGameMode[k]?.contains(_sharedPrefs.level) ?? false,
+        orElse: () => false);
+
+    _levelValue = onlineGameMode[_gameModeValue]?.contains(_sharedPrefs.level) ?? false
         ? _sharedPrefs.level
-        : onlineGameMode[_gameModeValue].first;
-    _victoryCount = _sharedPrefs.victoryCount ?? 0;
-    _defeatCount = _sharedPrefs.defeatCount ?? 0;
+        : onlineGameMode[_gameModeValue]?.first ?? '';
+
+    _victoryCount = _sharedPrefs.victoryCount;
+    _defeatCount = _sharedPrefs.defeatCount;
     notifyListeners();
   }
 
-  bool get gameModePref => _sharedPrefs.gameMode ?? false;
-  String get levelPref => _sharedPrefs.level ?? onlineGameMode[gameModePref].first;
+  bool get gameModePref => _sharedPrefs.gameMode;
+  String get levelPref => (_sharedPrefs.level != '')
+      ? _sharedPrefs.level
+      : onlineGameMode[gameModePref]?.first ?? '';
 
   void resetValues() => _getPrefs();
 
@@ -66,7 +71,7 @@ class Data extends ChangeNotifier {
   set updateGameMode(bool value) {
     _gameModeValue = value;
     setPrefGameMode = gameModeValue;
-    updateLevel = onlineGameMode[value].first;
+    updateLevel = onlineGameMode[value]?.first ?? '';
     notifyListeners();
   }
 
@@ -95,8 +100,8 @@ class Data extends ChangeNotifier {
 
   String get hiddenWord => _hiddenWord.join();
 
-  void updateHiddenWord(int index, String letra) {
-    _hiddenWord[index] = letra;
+  void updateHiddenWord(int index, String letter) {
+    _hiddenWord[index] = letter;
     notifyListeners();
   }
 
@@ -147,7 +152,7 @@ class Data extends ChangeNotifier {
 
   void resetGame() {
     _errors = 0;
-    _secretWord = null;
+    _secretWord = '';
     _clue = '';
     _hiddenWord = [];
     _usedLetters = [];
diff --git a/lib/screens/game.dart b/lib/screens/game.dart
index 2c039c4dd4e8e06b4d34dc8008dba80f5f5a1395..bfb2e5e8219d1e28f917614b2ad83eaa36d99ac2 100644
--- a/lib/screens/game.dart
+++ b/lib/screens/game.dart
@@ -15,7 +15,7 @@ class Game extends StatelessWidget {
     do {
       randompick = RandomPick(myProvider.levelPref);
       await randompick.init();
-      if (randompick.word != null) {
+      if (randompick.word != '') {
         myProvider.updateSecretWord = randompick.word;
         myProvider.resetSuccessAndErrors();
         myProvider.resetUsedLetters();
@@ -108,7 +108,7 @@ class Game extends StatelessWidget {
 }
 
 class ImgGallow extends StatelessWidget {
-  const ImgGallow({Key key}) : super(key: key);
+  const ImgGallow({Key? key}) : super(key: key);
   @override
   Widget build(BuildContext context) {
     Data _myProvider = Provider.of<Data>(context);
@@ -126,13 +126,13 @@ class ImgGallow extends StatelessWidget {
 }
 
 class HiddenWord extends StatelessWidget {
-  const HiddenWord({Key key}) : super(key: key);
+  const HiddenWord({Key? key}) : super(key: key);
   @override
   Widget build(BuildContext context) {
     Data _myProvider = Provider.of<Data>(context);
     return FittedBox(
       child: Text(
-        (_myProvider.hiddenWord.isEmpty || _myProvider.hiddenWord == null)
+        (_myProvider.hiddenWord.isEmpty || _myProvider.hiddenWord == '')
             ? 'UNEXPECTED ERROR'
             : _myProvider.hiddenWord,
         style: TextStyle(
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 6142e9eeb354c2c618c70fe74d5f50ff7f4e4d1a..6affdc69acdf9ca53a10630515c8898692dcf8d9 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -83,17 +83,18 @@ class Home extends StatelessWidget {
                                 children: [
                                   Text('Niveau'),
                                   DropdownButton<String>(
-                                    value: _myProvider.levelValue ??
-                                        onlineGameMode[_myProvider.gameModeValue].first,
+                                    value: _myProvider.levelValue != ''
+                                        ? _myProvider.levelValue
+                                        : onlineGameMode[_myProvider.gameModeValue]?.first,
                                     items: onlineGameMode[_myProvider.gameModeValue]
-                                        .map<DropdownMenuItem<String>>((String value) {
+                                        ?.map<DropdownMenuItem<String>>((String value) {
                                       return DropdownMenuItem<String>(
                                         value: value,
                                         child: Text(value),
                                       );
                                     }).toList(),
-                                    onChanged: (String value) =>
-                                        _myProvider.updateLevel = value,
+                                    onChanged: (String? value) =>
+                                        _myProvider.updateLevel = value ?? '',
                                   ),
                                 ],
                               ),
@@ -110,10 +111,8 @@ class Home extends StatelessWidget {
                               _myProvider.searching = true;
                               bool control = true;
                               await Game().pickWord(context, _myProvider);
-                              if (_myProvider.secretWord == null ||
-                                  _myProvider.secretWord == '' ||
-                                  _myProvider.hiddenWord == null ||
-                                  (_myProvider.hiddenWord?.isEmpty ?? true)) {
+                              if (_myProvider.secretWord == '' ||
+                                  _myProvider.hiddenWord == '') {
                                 control = false;
                                 var response = await Navigator.push(
                                   context,
diff --git a/lib/utils/constants.dart b/lib/utils/constants.dart
index 7b9aa37d491974c46cd3917a7cf1449a96aeb3f5..53cba215ffaa336845efc4b67a3255bf3e2aebf5 100644
--- a/lib/utils/constants.dart
+++ b/lib/utils/constants.dart
@@ -9,16 +9,10 @@ const Map<bool, List<String>> onlineGameMode = {
 
 const String defaultLevel = 'Thèmes';
 
-//colores
+// Colors
 const int darkGreen = 0xff013220;
 const int board = 0xff004D00;
 const int accent = 0xffD81B60;
-/*
-<color name="colorPrimary">#008577</color>
-<color name="colorPrimaryDark">#00574B</color>
-<color name="colorAccent">#D81B60</color>
-<color name="pizarra">#004D00</color>
-*/
 
 // GameOver
 enum GameOver { VICTORY, DEFEAT }
@@ -29,14 +23,14 @@ extension GameOverExtension on GameOver {
     GameOver.DEFEAT: 'Pendu !',
   };
 
-  String get title => titles[this];
+  String get title => titles[this] ?? '?';
 
   static const icons = {
     GameOver.VICTORY: Icons.military_tech,
     GameOver.DEFEAT: Icons.gavel,
   };
 
-  IconData get icon => icons[this];
+  IconData get icon => icons[this] ?? Icons.error;
 }
 
 const victory = GameOver.VICTORY;
diff --git a/lib/utils/random_pick.dart b/lib/utils/random_pick.dart
index a19affea317235b7bdea1e6dc29c6bf62cdf83f0..ff903b1be2fa94769ff63743f46be3f958de4044 100644
--- a/lib/utils/random_pick.dart
+++ b/lib/utils/random_pick.dart
@@ -13,9 +13,9 @@ class RandomPick {
   final String level;
   RandomPick(this.level);
 
-  String _url;
-  String _word;
-  String _clue;
+  String _url = '';
+  String _word = '';
+  String _clue = '';
   final random = Random();
 
   init() async {
@@ -48,7 +48,7 @@ class RandomPick {
         var html = parse(utf8.decode(response.bodyBytes));
         Element element = html.getElementsByTagName('div').last;
         String word = _validate(element.text);
-        if (word == null) {
+        if (word == '') {
           throw Exception();
         }
         _word = word;
@@ -56,21 +56,21 @@ class RandomPick {
         throw Exception();
       }
     } catch (e) {
-      _word = null;
+      _word = '';
     }
   }
 
   String _validate(String word) {
     String wordToValidate = word.trim();
     if (wordToValidate.contains(' ')) {
-      return null;
+      return '';
     }
     wordToValidate = removeDiacritics(wordToValidate);
     wordToValidate = wordToValidate.toUpperCase();
     wordToValidate = wordToValidate.replaceAll(RegExp('[0-9]'), '');
     wordToValidate = wordToValidate.replaceAll(RegExp('[^A-Z]'), '');
     if (wordToValidate.length < 3 || wordToValidate.length > 12) {
-      return null;
+      return '';
     }
     return wordToValidate;
   }
@@ -101,7 +101,11 @@ class RandomPick {
         words.add(word);
       }
       String word = words[random.nextInt(words.length)];
-      _word = word ?? 'UNEXPECTED ERROR';
+      if (word != '') {
+        _word = word;
+      } else {
+        _word = 'UNEXPECTED ERROR';
+      }
     } catch (e) {
       _word = 'UNEXPECTED ERROR';
     }
diff --git a/lib/utils/shared_prefs.dart b/lib/utils/shared_prefs.dart
index f3352af2bfff67580b89f2cfeb3aedd772c19eb0..cde8a6e980d030d9d55ff69808a3bf2c5b348bab 100644
--- a/lib/utils/shared_prefs.dart
+++ b/lib/utils/shared_prefs.dart
@@ -1,7 +1,7 @@
 import 'package:shared_preferences/shared_preferences.dart';
 
 class SharedPrefs {
-  static SharedPreferences _sharedPrefs;
+  static SharedPreferences? _sharedPrefs;
   static const String _prefsGameMode = 'gameMode';
   static const String _prefsLevel = 'level';
   static const String _prefsVictoryCount = 'victoryCount';
@@ -13,19 +13,19 @@ class SharedPrefs {
     }
   }
 
-  bool get gameMode => _sharedPrefs?.getBool(_prefsGameMode);
+  bool get gameMode => _sharedPrefs?.getBool(_prefsGameMode) ?? false;
 
-  set gameMode(bool value) => _sharedPrefs.setBool(_prefsGameMode, value);
+  set gameMode(bool value) => _sharedPrefs?.setBool(_prefsGameMode, value);
 
-  String get level => _sharedPrefs?.getString(_prefsLevel);
+  String get level => _sharedPrefs?.getString(_prefsLevel) ?? '';
 
-  set level(String value) => _sharedPrefs.setString(_prefsLevel, value);
+  set level(String value) => _sharedPrefs?.setString(_prefsLevel, value);
 
-  int get victoryCount => _sharedPrefs?.getInt(_prefsVictoryCount);
+  int get victoryCount => _sharedPrefs?.getInt(_prefsVictoryCount) ?? 0;
 
   set victoryCount(int value) => _sharedPrefs?.setInt(_prefsVictoryCount, value);
 
-  int get defeatCount => _sharedPrefs?.getInt(_prefsDefeatCount);
+  int get defeatCount => _sharedPrefs?.getInt(_prefsDefeatCount) ?? 0;
 
   set defeatCount(int value) => _sharedPrefs?.setInt(_prefsDefeatCount, value);
 }
diff --git a/lib/widgets/dialog_fetch_error.dart b/lib/widgets/dialog_fetch_error.dart
index c355b285f95eaa7300a631db1673fb5e620f3fbb..fc44528706273e4538a4b458f95756a682f92007 100644
--- a/lib/widgets/dialog_fetch_error.dart
+++ b/lib/widgets/dialog_fetch_error.dart
@@ -2,7 +2,7 @@ import 'package:hangman/utils/constants.dart';
 import 'package:flutter/material.dart';
 
 class DialogFetchError extends StatelessWidget {
-  const DialogFetchError({Key key}) : super(key: key);
+  const DialogFetchError({Key? key}) : super(key: key);
 
   @override
   Widget build(BuildContext context) {
diff --git a/lib/widgets/letters.dart b/lib/widgets/letters.dart
index d3f45db3112ff1edd891c20e9f900d6ab86e3712..e1de350c16c27390111d101511e8d17acf1ae024 100644
--- a/lib/widgets/letters.dart
+++ b/lib/widgets/letters.dart
@@ -5,7 +5,7 @@ import '../utils/constants.dart';
 import '../widgets/dialog_gameover.dart';
 
 class LetterButtons extends StatelessWidget {
-  const LetterButtons({Key key}) : super(key: key);
+  const LetterButtons({Key? key}) : super(key: key);
 
   @override
   Widget build(BuildContext context) {
diff --git a/lib/widgets/my_app_bar.dart b/lib/widgets/my_app_bar.dart
index 74080942ea54381cd5491e0743f149d80ad3638c..4737a1bb6eb3108a3c968eb1862b1811ef7d6987 100644
--- a/lib/widgets/my_app_bar.dart
+++ b/lib/widgets/my_app_bar.dart
@@ -4,11 +4,11 @@ import 'package:flutter/services.dart' show SystemNavigator;
 import '../screens/scores.dart';
 
 class MyAppBar extends StatelessWidget implements PreferredSizeWidget {
-  final AppBar appBar;
-  const MyAppBar({Key key, this.appBar}) : super(key: key);
+  final AppBar? appBar;
+  const MyAppBar({Key? key, this.appBar}) : super(key: key);
 
   @override
-  Size get preferredSize => Size.fromHeight(appBar.preferredSize.height);
+  Size get preferredSize => Size.fromHeight(appBar?.preferredSize.height ?? 0.0);
 
   @override
   Widget build(BuildContext context) {
diff --git a/pubspec.lock b/pubspec.lock
index 560a4a787b47ff9b3f1c529efe61af84b332225b..b9eec1c00ff69c1bbded450e6f60bad86394cf92 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -49,7 +49,7 @@ packages:
       name: csslib
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.16.2"
+    version: "0.17.2"
   diacritic:
     dependency: "direct main"
     description:
@@ -99,21 +99,21 @@ packages:
       name: html
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.14.0+4"
+    version: "0.15.0"
   http:
     dependency: "direct main"
     description:
       name: http
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.12.2"
+    version: "0.13.4"
   http_parser:
     dependency: transitive
     description:
       name: http_parser
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "3.1.4"
+    version: "4.0.1"
   js:
     dependency: transitive
     description:
@@ -177,13 +177,6 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "2.1.0"
-  pedantic:
-    dependency: transitive
-    description:
-      name: pedantic
-      url: "https://pub.dartlang.org"
-    source: hosted
-    version: "1.11.1"
   platform:
     dependency: transitive
     description:
@@ -211,7 +204,7 @@ packages:
       name: provider
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "4.3.3"
+    version: "6.0.3"
   shared_preferences:
     dependency: "direct main"
     description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 580c095fe8f7e4903bf36a5bcef81cf0bf61dd9a..83b66273e0ac790452c7bfc101c8523ecfff7dce 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -4,15 +4,15 @@ publish_to: 'none'
 version: 1.1.3+1
 
 environment:
-  sdk: ">=2.7.0 <3.0.0"
+  sdk: ">=2.16.1 <3.0.0"
 
 dependencies:
   flutter:
     sdk: flutter
-  provider: ^4.3.2+3
+  provider: ^6.0.2
   shared_preferences: ^2.0.6
-  html: ^0.14.0+4
-  http: ^0.12.2
+  html: ^0.15.0
+  http: ^0.13.4
   diacritic: ^0.1.1
 
 dev_dependencies: