diff --git a/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f9b303465f19b5fbf5ec669cd083c9cc38ecda9a
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1 @@
+include: package:flutter_lints/flutter.yaml
diff --git a/android/app/build.gradle b/android/app/build.gradle
index aaabba23a4570b6205992a44d9f6ef721b3b8248..9eac50c8ec4b0da87b3e734d9543f4b018d70f15 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -44,7 +44,7 @@ android {
 
     defaultConfig {
         applicationId "org.benoitharrault.solitaire"
-        minSdkVersion 16
+        minSdkVersion flutter.minSdkVersion
         targetSdkVersion 30
         versionCode appVersionCode.toInteger()
         versionName appVersionName
diff --git a/android/gradle.properties b/android/gradle.properties
index d9abd55731010fe508f39321892e8002f10e79ef..663881258a10822c0b4abc064b6e0bc0ccf48833 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.12
-app.versionCode=12
+app.versionName=0.0.13
+app.versionCode=13
diff --git a/fastlane/metadata/android/en-US/changelogs/13.txt b/fastlane/metadata/android/en-US/changelogs/13.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6ab11150150fc75a46c9acc317890208e5a120b9
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/13.txt
@@ -0,0 +1 @@
+Add automatic flutter linter. Apply code lints. Update dependencies.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/13.txt b/fastlane/metadata/android/fr-FR/changelogs/13.txt
new file mode 100644
index 0000000000000000000000000000000000000000..609f5cf6e95a8df0799865df2e1ebde8fa981e5a
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/13.txt
@@ -0,0 +1 @@
+Ajout d'un correcteur automatique de code. Application des corrections. Mise à jour des dépendances.
diff --git a/lib/entities/tile.dart b/lib/entities/tile.dart
index 75b694bc51bd2576ccd31109610315323ee00d09..64227e6317941c23413b94f41929514ba469e8dc 100644
--- a/lib/entities/tile.dart
+++ b/lib/entities/tile.dart
@@ -15,11 +15,11 @@ class Tile {
 
   Widget render(Data myProvider) {
     List<Widget> stack = [
-      this.hole(myProvider),
+      hole(myProvider),
     ];
 
-    if (this.hasPeg) {
-      stack.add(this.draggable(myProvider));
+    if (hasPeg) {
+      stack.add(draggable(myProvider));
     }
 
     return Stack(
@@ -29,7 +29,7 @@ class Tile {
   }
 
   Widget hole(Data myProvider) {
-    String image = 'assets/skins/' + myProvider.parameterSkin + '_hole.png';
+    String image = 'assets/skins/${myProvider.parameterSkin}_hole.png';
 
     return DragTarget<List<int>>(
       builder: (
@@ -37,20 +37,18 @@ class Tile {
         List<dynamic> accepted,
         List<dynamic> rejected,
       ) {
-        return Container(
-          child: Image(
-            image: AssetImage(image),
-            width: myProvider.tileSize,
-            height: myProvider.tileSize,
-            fit: BoxFit.fill,
-          ),
+        return Image(
+          image: AssetImage(image),
+          width: myProvider.tileSize,
+          height: myProvider.tileSize,
+          fit: BoxFit.fill,
         );
       },
-      onAccept: (List<int> source) {
-        List<int> target = [this.currentCol, this.currentRow];
+      onAcceptWithDetails: (DragTargetDetails<List<int>> source) {
+        List<int> target = [currentCol, currentRow];
         // print('(drag) Pick from ' + source.toString() + ' and drop on ' + target.toString());
-        if (GameUtils.isMoveAllowed(myProvider, source, target)) {
-          GameUtils.move(myProvider, source, target);
+        if (GameUtils.isMoveAllowed(myProvider, source.data, target)) {
+          GameUtils.move(myProvider, source.data, target);
         }
       },
     );
@@ -58,21 +56,21 @@ class Tile {
 
   Widget draggable(Data myProvider) {
     return Draggable<List<int>>(
-      data: [this.currentCol, this.currentRow],
-
-      // Widget when draggable is stationary
-      child: this.peg(myProvider),
+      data: [currentCol, currentRow],
 
       // Widget when draggable is being dragged
-      feedback: this.peg(myProvider),
+      feedback: peg(myProvider),
 
       // Widget to display on original place when being dragged
       childWhenDragging: Container(),
+
+      // Widget when draggable is stationary
+      child: peg(myProvider),
     );
   }
 
   Widget peg(Data myProvider) {
-    String image = 'assets/skins/' + myProvider.parameterSkin + '_peg.png';
+    String image = 'assets/skins/${myProvider.parameterSkin}_peg.png';
 
     return Image(
       image: AssetImage(image),
diff --git a/lib/layout/board.dart b/lib/layout/board.dart
index 1843cc9906f48768a5fb67b5d868d4b061201595..d00a12d842b5713a69249731d9e9e367d325e8c4 100644
--- a/lib/layout/board.dart
+++ b/lib/layout/board.dart
@@ -3,13 +3,11 @@ import 'package:solitaire_game/entities/tile.dart';
 import 'package:solitaire_game/provider/data.dart';
 
 class Board {
-  static Container buildGameBoard(Data myProvider) {
-    return Container(
-      child: Column(
-        children: [
-          buildGameTileset(myProvider),
-        ],
-      ),
+  static Widget buildGameBoard(Data myProvider) {
+    return Column(
+      children: [
+        buildGameTileset(myProvider),
+      ],
     );
   }
 
@@ -17,19 +15,19 @@ class Board {
     List<List<Tile?>> board = myProvider.board;
 
     Widget boardTileWithoutHole = Image(
-      image: AssetImage('assets/skins/' + myProvider.parameterSkin + '_board.png'),
+      image: AssetImage('assets/skins/${myProvider.parameterSkin}_board.png'),
       width: myProvider.tileSize,
       height: myProvider.tileSize,
       fit: BoxFit.fill,
     );
 
     return Table(
-      defaultColumnWidth: IntrinsicColumnWidth(),
+      defaultColumnWidth: const IntrinsicColumnWidth(),
       children: [
-        for (var row = 0; row < board.length; row++)
+        for (int row = 0; row < board.length; row++)
           TableRow(
             children: [
-              for (var col = 0; col < board[row].length; col++)
+              for (int col = 0; col < board[row].length; col++)
                 TableCell(
                   child: board[row][col] != null
                       ? (board[row][col]?.render(myProvider) ?? Container())
diff --git a/lib/layout/game.dart b/lib/layout/game.dart
index 0e1271bb36d8914344a2fdf30e9ebc22d5548e3c..69d533d52639dca309a4fe61efcc57bdf33ee457 100644
--- a/lib/layout/game.dart
+++ b/lib/layout/game.dart
@@ -4,31 +4,31 @@ import 'package:solitaire_game/provider/data.dart';
 import 'package:solitaire_game/utils/game_utils.dart';
 
 class Game {
-  static Container buildGameWidget(Data myProvider) {
-    bool gameIsFinished = myProvider.gameIsFinished;
+  static Widget buildGameWidget(Data myProvider) {
+    final bool gameIsFinished = myProvider.gameIsFinished;
 
-    return Container(
-      child: Column(
-        mainAxisAlignment: MainAxisAlignment.start,
-        crossAxisAlignment: CrossAxisAlignment.center,
-        children: [
-          SizedBox(height: 8),
-          Game.buildTopIndicatorWidget(myProvider),
-          SizedBox(height: 2),
-          Expanded(
-            child: Board.buildGameBoard(myProvider),
-          ),
-          SizedBox(height: 2),
-          Container(
-            child: gameIsFinished ? Game.buildEndGameMessage(myProvider) : SizedBox(height: 2),
-          ),
-        ],
-      ),
+    return Column(
+      mainAxisAlignment: MainAxisAlignment.start,
+      crossAxisAlignment: CrossAxisAlignment.center,
+      children: [
+        const SizedBox(height: 8),
+        Game.buildTopIndicatorWidget(myProvider),
+        const SizedBox(height: 2),
+        Expanded(
+          child: Board.buildGameBoard(myProvider),
+        ),
+        const SizedBox(height: 2),
+        Container(
+          child: gameIsFinished
+              ? Game.buildEndGameMessage(myProvider)
+              : const SizedBox(height: 2),
+        ),
+      ],
     );
   }
 
   static Widget buildTopIndicatorWidget(Data myProvider) {
-    int allowedMovesCount = myProvider.allowedMovesCount;
+    final int allowedMovesCount = myProvider.allowedMovesCount;
 
     return Table(
       children: [
@@ -37,8 +37,8 @@ class Game {
             Column(
               children: [
                 Text(
-                  '♟️ ' + myProvider.remainingPegsCount.toString(),
-                  style: TextStyle(
+                  '♟️ ${myProvider.remainingPegsCount}',
+                  style: const TextStyle(
                     fontSize: 40,
                     fontWeight: FontWeight.w600,
                     color: Colors.black,
@@ -50,7 +50,7 @@ class Game {
               children: [
                 Text(
                   allowedMovesCount.toString(),
-                  style: TextStyle(
+                  style: const TextStyle(
                     fontSize: 20,
                     fontWeight: FontWeight.w600,
                     color: Colors.green,
@@ -66,11 +66,9 @@ class Game {
 
   static TextButton buildQuitGameButton(Data myProvider) {
     return TextButton(
-      child: Container(
-        child: Image(
-          image: AssetImage('assets/icons/button_back.png'),
-          fit: BoxFit.fill,
-        ),
+      child: const Image(
+        image: AssetImage('assets/icons/button_back.png'),
+        fit: BoxFit.fill,
       ),
       onPressed: () => GameUtils.quitAndDeleteCurrentGame(myProvider),
     );
@@ -84,16 +82,16 @@ class Game {
       decorationImageAssetName = 'assets/icons/placeholder.png';
     }
 
-    Image decorationImage = Image(
+    final Image decorationImage = Image(
       image: AssetImage(decorationImageAssetName),
       fit: BoxFit.fill,
     );
 
     return Container(
-      margin: EdgeInsets.all(2),
-      padding: EdgeInsets.all(2),
+      margin: const EdgeInsets.all(2),
+      padding: const EdgeInsets.all(2),
       child: Table(
-        defaultColumnWidth: IntrinsicColumnWidth(),
+        defaultColumnWidth: const IntrinsicColumnWidth(),
         children: [
           TableRow(
             children: [
diff --git a/lib/layout/parameters.dart b/lib/layout/parameters.dart
index 906a89d38d6daa29480c1de374baac0c843ee41b..f2edf749b878980c9b953f55c87ebf320e2592f7 100644
--- a/lib/layout/parameters.dart
+++ b/lib/layout/parameters.dart
@@ -14,11 +14,11 @@ class Parameters {
   static double buttonPadding = 0.0;
   static double buttonMargin = 0.0;
 
-  static Container buildParametersSelector(Data myProvider) {
+  static Widget buildParametersSelector(Data myProvider) {
     List<Widget> lines = [];
 
     List parameters = myProvider.availableParameters;
-    for (var index = 0; index < parameters.length; index++) {
+    for (int index = 0; index < parameters.length; index++) {
       lines.add(buildParameterSelector(myProvider, parameters[index]));
       lines.add(SizedBox(height: separatorHeight));
     }
@@ -28,31 +28,29 @@ class Parameters {
         ? buildResumeGameButton(myProvider)
         : buildStartNewGameButton(myProvider);
 
-    return Container(
-      child: Column(
-        mainAxisAlignment: MainAxisAlignment.start,
-        crossAxisAlignment: CrossAxisAlignment.center,
-        children: [
-          SizedBox(height: separatorHeight),
-          Expanded(
-            child: Column(
-              mainAxisSize: MainAxisSize.min,
-              mainAxisAlignment: MainAxisAlignment.center,
-              children: lines,
-            ),
-          ),
-          SizedBox(height: separatorHeight),
-          Container(
-            child: buttonsBlock,
+    return Column(
+      mainAxisAlignment: MainAxisAlignment.start,
+      crossAxisAlignment: CrossAxisAlignment.center,
+      children: [
+        SizedBox(height: separatorHeight),
+        Expanded(
+          child: Column(
+            mainAxisSize: MainAxisSize.min,
+            mainAxisAlignment: MainAxisAlignment.center,
+            children: lines,
           ),
-        ],
-      ),
+        ),
+        SizedBox(height: separatorHeight),
+        Container(
+          child: buttonsBlock,
+        ),
+      ],
     );
   }
 
   static Image buildImageWidget(String imageAssetCode) {
     return Image(
-      image: AssetImage('assets/icons/' + imageAssetCode + '.png'),
+      image: AssetImage('assets/icons/$imageAssetCode.png'),
       fit: BoxFit.fill,
     );
   }
@@ -68,7 +66,7 @@ class Parameters {
       children: [
         TextButton(
           child: buildImageContainerWidget('placeholder'),
-          onPressed: () => null,
+          onPressed: () {},
         ),
       ],
     );
@@ -79,7 +77,7 @@ class Parameters {
       margin: EdgeInsets.all(blockMargin),
       padding: EdgeInsets.all(blockPadding),
       child: Table(
-        defaultColumnWidth: IntrinsicColumnWidth(),
+        defaultColumnWidth: const IntrinsicColumnWidth(),
         children: [
           TableRow(
             children: [
@@ -105,7 +103,7 @@ class Parameters {
       margin: EdgeInsets.all(blockMargin),
       padding: EdgeInsets.all(blockPadding),
       child: Table(
-        defaultColumnWidth: IntrinsicColumnWidth(),
+        defaultColumnWidth: const IntrinsicColumnWidth(),
         children: [
           TableRow(
             children: [
@@ -137,15 +135,15 @@ class Parameters {
     List availableValues = myProvider.getParameterAvailableValues(parameterCode);
 
     if (availableValues.length == 1) {
-      return SizedBox(height: 0.0);
+      return const SizedBox(height: 0.0);
     }
 
     return Table(
-      defaultColumnWidth: IntrinsicColumnWidth(),
+      defaultColumnWidth: const IntrinsicColumnWidth(),
       children: [
         TableRow(
           children: [
-            for (var index = 0; index < availableValues.length; index++)
+            for (int index = 0; index < availableValues.length; index++)
               Column(
                 children: [
                   _buildParameterButton(myProvider, parameterCode, availableValues[index])
@@ -162,7 +160,7 @@ class Parameters {
     String currentValue = myProvider.getParameterValue(parameterCode).toString();
 
     bool isActive = (parameterValue == currentValue);
-    String imageAsset = parameterCode + '_' + parameterValue;
+    String imageAsset = '${parameterCode}_$parameterValue';
 
     return TextButton(
       child: Container(
diff --git a/lib/main.dart b/lib/main.dart
index e29c78b17d00fd5f174971f31e9fad94a1cbb39d..1967ce48b7b68fc784b45da9f4ee9e121c7acdd9 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -8,10 +8,12 @@ import 'package:solitaire_game/screens/home.dart';
 void main() {
   WidgetsFlutterBinding.ensureInitialized();
   SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
-      .then((value) => runApp(MyApp()));
+      .then((value) => runApp(const MyApp()));
 }
 
 class MyApp extends StatelessWidget {
+  const MyApp({super.key});
+
   @override
   Widget build(BuildContext context) {
     return ChangeNotifierProvider(
@@ -24,9 +26,9 @@ class MyApp extends StatelessWidget {
               primaryColor: Colors.blue,
               visualDensity: VisualDensity.adaptivePlatformDensity,
             ),
-            home: Home(),
+            home: const Home(),
             routes: {
-              Home.id: (context) => Home(),
+              Home.id: (context) => const Home(),
             },
           ),
         );
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index 88ec5a4fee8db62f0420400879cfb909055d1055..699b5c5f0cde537a8a9f39334b3e1758dcb1050f 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -7,20 +7,20 @@ import 'package:solitaire_game/utils/game_utils.dart';
 
 class Data extends ChangeNotifier {
   // Configuration available values
-  List _availableParameters = ['layout', 'skin'];
+  final List<String> _availableParameters = ['layout', 'skin'];
 
-  List _availableLayoutValues = ['french', 'german', 'english', 'diamond'];
-  List _availableSkinValues = ['default'];
+  final List<String> _availableLayoutValues = ['french', 'german', 'english', 'diamond'];
+  final List<String> _availableSkinValues = ['default'];
 
-  List get availableParameters => _availableParameters;
-  List get availableLayoutValues => _availableLayoutValues;
-  List get availableSkinValues => _availableSkinValues;
+  List<String> get availableParameters => _availableParameters;
+  List<String> get availableLayoutValues => _availableLayoutValues;
+  List<String> get availableSkinValues => _availableSkinValues;
 
   // Application default configuration
   String _parameterLayout = '';
   String _parameterSkin = '';
-  String _parameterLayoutDefault = 'english';
-  String _parameterSkinDefault = 'default';
+  final String _parameterLayoutDefault = 'english';
+  final String _parameterSkinDefault = 'default';
 
   // Application current configuration
   String get parameterLayout => _parameterLayout;
@@ -95,8 +95,8 @@ class Data extends ChangeNotifier {
     String textBoard = ' ';
     String textHole = '·';
     String textPeg = 'o';
-    for (var rowIndex = 0; rowIndex < _board.length; rowIndex++) {
-      for (var colIndex = 0; colIndex < _board[rowIndex].length; colIndex++) {
+    for (int rowIndex = 0; rowIndex < _board.length; rowIndex++) {
+      for (int colIndex = 0; colIndex < _board[rowIndex].length; colIndex++) {
         String cellValue = textBoard;
         if (_board[rowIndex][colIndex] != null) {
           cellValue = (_board[rowIndex][colIndex]?.hasPeg ?? false) ? textPeg : textHole;
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 86b8fcec5f94a4da3f400a2c9a75949cc75adad1..62b3a0ff7abf625c6460087864f9f7430dfabeff 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -7,13 +7,15 @@ import 'package:solitaire_game/provider/data.dart';
 import 'package:solitaire_game/utils/game_utils.dart';
 
 class Home extends StatefulWidget {
+  const Home({super.key});
+
   static const String id = 'home';
 
   @override
-  _HomeState createState() => _HomeState();
+  HomeState createState() => HomeState();
 }
 
-class _HomeState extends State<Home> {
+class HomeState extends State<Home> {
   @override
   void initState() {
     super.initState();
@@ -23,10 +25,10 @@ class _HomeState extends State<Home> {
     myProvider.loadCurrentSavedState();
   }
 
-  List getImagesAssets(Data myProvider) {
-    List assets = [];
+  List<String> getImagesAssets(Data myProvider) {
+    final List<String> assets = [];
 
-    List gameImages = [
+    final List<String> gameImages = [
       'button_back',
       'button_delete_saved_game',
       'button_resume_game',
@@ -35,19 +37,28 @@ class _HomeState extends State<Home> {
       'game_win',
       'placeholder',
     ];
-    myProvider.availableLayoutValues.forEach((layout) => gameImages.add('layout_' + layout));
-    myProvider.availableSkinValues.forEach((skin) => gameImages.add('skin_' + skin));
+    for (String layout in myProvider.availableLayoutValues) {
+      gameImages.add('layout_$layout');
+    }
+    for (String skin in myProvider.availableSkinValues) {
+      gameImages.add('skin_$skin');
+    }
 
-    gameImages.forEach((image) => assets.add('assets/icons/' + image + '.png'));
+    for (String image in gameImages) {
+      assets.add('${'assets/icons/$image'}.png');
+    }
 
-    List skinImages = [
+    const List<String> skinImages = [
       'board',
       'hole',
       'peg',
     ];
 
-    myProvider.availableSkinValues.forEach((skin) => skinImages
-        .forEach((image) => assets.add('assets/skins/' + skin + '_' + image + '.png')));
+    for (String skin in myProvider.availableSkinValues) {
+      for (String image in skinImages) {
+        assets.add('${'${'assets/skins/$skin'}_$image'}.png');
+      }
+    }
 
     return assets;
   }
@@ -57,8 +68,10 @@ class _HomeState extends State<Home> {
     Data myProvider = Provider.of<Data>(context);
 
     if (!myProvider.assetsPreloaded) {
-      List assets = getImagesAssets(myProvider);
-      assets.forEach((asset) => precacheImage(AssetImage(asset), context));
+      List<String> assets = getImagesAssets(myProvider);
+      for (String asset in assets) {
+        precacheImage(AssetImage(asset), context);
+      }
       myProvider.updateAssetsPreloaded(true);
     }
 
@@ -77,7 +90,7 @@ class _HomeState extends State<Home> {
                 width: 4,
               ),
             ),
-            child: Image(
+            child: const Image(
               image: AssetImage('assets/icons/button_back.png'),
               fit: BoxFit.fill,
             ),
diff --git a/lib/utils/board_utils.dart b/lib/utils/board_utils.dart
index 3aca98424d8a7c82eb4e97368a9d717783984b49..53ae2eb3ed0dcdd781148f161e9e3a209388fe08 100644
--- a/lib/utils/board_utils.dart
+++ b/lib/utils/board_utils.dart
@@ -11,9 +11,9 @@ class BoardUtils {
 
     print('');
     print('-------');
-    for (var rowIndex = 0; rowIndex < cells.length; rowIndex++) {
+    for (int rowIndex = 0; rowIndex < cells.length; rowIndex++) {
       String row = '';
-      for (var colIndex = 0; colIndex < cells[rowIndex].length; colIndex++) {
+      for (int colIndex = 0; colIndex < cells[rowIndex].length; colIndex++) {
         String textCell = textBoard;
         Tile? tile = cells[rowIndex][colIndex];
         if (tile != null) {
@@ -36,9 +36,9 @@ class BoardUtils {
     String textPeg = 'o';
 
     int index = 0;
-    for (var rowIndex = 0; rowIndex < boardSize; rowIndex++) {
+    for (int rowIndex = 0; rowIndex < boardSize; rowIndex++) {
       List<Tile?> row = [];
-      for (var colIndex = 0; colIndex < boardSize; colIndex++) {
+      for (int colIndex = 0; colIndex < boardSize; colIndex++) {
         String stringValue = savedBoard[index++];
         if (stringValue == textBoard) {
           row.add(null);
@@ -104,7 +104,7 @@ class BoardUtils {
       List<Tile?> gridLine = [];
       int col = 0;
       line.split("").forEach((String tileCode) {
-        gridLine.add(tileCode == ' ' ? null : new Tile(row, col, (tileCode == 'o')));
+        gridLine.add(tileCode == ' ' ? null : Tile(row, col, (tileCode == 'o')));
         col++;
       });
       row++;
diff --git a/lib/utils/game_utils.dart b/lib/utils/game_utils.dart
index 6bbda80f5ff29bb329bbc1ff254d67b5f4c88fb4..7b99a816ed6738d2c1924dd137c182e010f202d4 100644
--- a/lib/utils/game_utils.dart
+++ b/lib/utils/game_utils.dart
@@ -110,7 +110,7 @@ class GameUtils {
   }
 
   static void move(Data myProvider, List<int> source, List<int> target) {
-    print('Move from ' + source.toString() + ' to ' + target.toString());
+    print('Move from $source to $target');
     int sourceCol = source[0];
     int sourceRow = source[1];
     int targetCol = target[0];
@@ -138,8 +138,8 @@ class GameUtils {
     List<Tile> pegs = [];
 
     List<List<Tile?>> board = myProvider.board;
-    for (var rowIndex = 0; rowIndex < board.length; rowIndex++) {
-      for (var colIndex = 0; colIndex < board[rowIndex].length; colIndex++) {
+    for (int rowIndex = 0; rowIndex < board.length; rowIndex++) {
+      for (int colIndex = 0; colIndex < board[rowIndex].length; colIndex++) {
         Tile? tile = board[rowIndex][colIndex];
         if (tile != null && tile.hasPeg == true) {
           pegs.add(tile);
@@ -157,7 +157,7 @@ class GameUtils {
   static int countAllowedMoves(Data myProvider) {
     int allowedMovesCount = 0;
     List<Tile> pegs = GameUtils.listRemainingPegs(myProvider);
-    pegs.forEach((tile) {
+    for (Tile tile in pegs) {
       int row = tile.currentRow;
       int col = tile.currentCol;
       List<int> source = [col, row];
@@ -167,12 +167,12 @@ class GameUtils {
         [col, row - 2],
         [col, row + 2],
       ];
-      targets.forEach((target) {
+      for (List<int> target in targets) {
         if (GameUtils.isMoveAllowed(myProvider, source, target)) {
           allowedMovesCount++;
         }
-      });
-    });
+      }
+    }
 
     return allowedMovesCount;
   }
diff --git a/pubspec.lock b/pubspec.lock
index f78ae3bfbc5b91625f56452dcbc944e3e78db356..f2dad354fa91396500fef3d18d03b00e93cac1bf 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -21,52 +21,68 @@ packages:
     dependency: transitive
     description:
       name: collection
-      sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
+      sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
       url: "https://pub.dev"
     source: hosted
-    version: "1.17.2"
+    version: "1.18.0"
   ffi:
     dependency: transitive
     description:
       name: ffi
-      sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
+      sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
       url: "https://pub.dev"
     source: hosted
-    version: "2.1.0"
+    version: "2.1.2"
   file:
     dependency: transitive
     description:
       name: file
-      sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
+      sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
       url: "https://pub.dev"
     source: hosted
-    version: "6.1.4"
+    version: "7.0.0"
   flutter:
     dependency: "direct main"
     description: flutter
     source: sdk
     version: "0.0.0"
+  flutter_lints:
+    dependency: "direct dev"
+    description:
+      name: flutter_lints
+      sha256: e2a421b7e59244faef694ba7b30562e489c2b489866e505074eb005cd7060db7
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.0.1"
   flutter_web_plugins:
     dependency: transitive
     description: flutter
     source: sdk
     version: "0.0.0"
+  lints:
+    dependency: transitive
+    description:
+      name: lints
+      sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.0.0"
   material_color_utilities:
     dependency: transitive
     description:
       name: material_color_utilities
-      sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
+      sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
       url: "https://pub.dev"
     source: hosted
-    version: "0.5.0"
+    version: "0.8.0"
   meta:
     dependency: transitive
     description:
       name: meta
-      sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+      sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
       url: "https://pub.dev"
     source: hosted
-    version: "1.9.1"
+    version: "1.11.0"
   nested:
     dependency: transitive
     description:
@@ -87,10 +103,10 @@ packages:
     dependency: transitive
     description:
       name: path
-      sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
+      sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
       url: "https://pub.dev"
     source: hosted
-    version: "1.8.3"
+    version: "1.9.0"
   path_provider_linux:
     dependency: transitive
     description:
@@ -103,10 +119,10 @@ packages:
     dependency: transitive
     description:
       name: path_provider_platform_interface
-      sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c"
+      sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
       url: "https://pub.dev"
     source: hosted
-    version: "2.1.1"
+    version: "2.1.2"
   path_provider_windows:
     dependency: transitive
     description:
@@ -119,34 +135,34 @@ packages:
     dependency: transitive
     description:
       name: platform
-      sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102
+      sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
       url: "https://pub.dev"
     source: hosted
-    version: "3.1.2"
+    version: "3.1.4"
   plugin_platform_interface:
     dependency: transitive
     description:
       name: plugin_platform_interface
-      sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d
+      sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
       url: "https://pub.dev"
     source: hosted
-    version: "2.1.6"
+    version: "2.1.8"
   provider:
     dependency: "direct main"
     description:
       name: provider
-      sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f
+      sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096"
       url: "https://pub.dev"
     source: hosted
-    version: "6.0.5"
+    version: "6.1.1"
   shared_preferences:
     dependency: "direct main"
     description:
       name: shared_preferences
-      sha256: b7f41bad7e521d205998772545de63ff4e6c97714775902c199353f8bf1511ac
+      sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02"
       url: "https://pub.dev"
     source: hosted
-    version: "2.2.1"
+    version: "2.2.2"
   shared_preferences_android:
     dependency: transitive
     description:
@@ -159,42 +175,42 @@ packages:
     dependency: transitive
     description:
       name: shared_preferences_foundation
-      sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7"
+      sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c"
       url: "https://pub.dev"
     source: hosted
-    version: "2.3.4"
+    version: "2.3.5"
   shared_preferences_linux:
     dependency: transitive
     description:
       name: shared_preferences_linux
-      sha256: c2eb5bf57a2fe9ad6988121609e47d3e07bb3bdca5b6f8444e4cf302428a128a
+      sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
       url: "https://pub.dev"
     source: hosted
-    version: "2.3.1"
+    version: "2.3.2"
   shared_preferences_platform_interface:
     dependency: transitive
     description:
       name: shared_preferences_platform_interface
-      sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a
+      sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
       url: "https://pub.dev"
     source: hosted
-    version: "2.3.1"
+    version: "2.3.2"
   shared_preferences_web:
     dependency: transitive
     description:
       name: shared_preferences_web
-      sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf
+      sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21"
       url: "https://pub.dev"
     source: hosted
-    version: "2.2.1"
+    version: "2.2.2"
   shared_preferences_windows:
     dependency: transitive
     description:
       name: shared_preferences_windows
-      sha256: f763a101313bd3be87edffe0560037500967de9c394a714cd598d945517f694f
+      sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
       url: "https://pub.dev"
     source: hosted
-    version: "2.3.1"
+    version: "2.3.2"
   sky_engine:
     dependency: transitive
     description: flutter
@@ -212,26 +228,26 @@ packages:
     dependency: transitive
     description:
       name: web
-      sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+      sha256: "4188706108906f002b3a293509234588823c8c979dc83304e229ff400c996b05"
       url: "https://pub.dev"
     source: hosted
-    version: "0.1.4-beta"
+    version: "0.4.2"
   win32:
     dependency: transitive
     description:
       name: win32
-      sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3"
+      sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8"
       url: "https://pub.dev"
     source: hosted
-    version: "5.0.9"
+    version: "5.2.0"
   xdg_directories:
     dependency: transitive
     description:
       name: xdg_directories
-      sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2"
+      sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
       url: "https://pub.dev"
     source: hosted
-    version: "1.0.3"
+    version: "1.0.4"
 sdks:
-  dart: ">=3.1.0-185.0.dev <4.0.0"
-  flutter: ">=3.7.0"
+  dart: ">=3.3.0-279.1.beta <4.0.0"
+  flutter: ">=3.16.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 72850cc28fdac17f23c55b10e71aec0f1aa47221..f364b2875bf200607796a87f4795f53f04af4b13 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,7 +1,7 @@
 name: solitaire_game
 description: Solitaire Game
 publish_to: 'none'
-version: 1.0.0+1
+version: 0.0.13+13
 
 environment:
   sdk: '^3.0.0'
@@ -13,6 +13,9 @@ dependencies:
   shared_preferences: ^2.2.1
   overlay_support: ^2.1.0
 
+dev_dependencies:
+  flutter_lints: ^3.0.1
+
 flutter:
   uses-material-design: true
   assets: