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 d59a7ba24d321feb03fdcfd4fcb049af369e7a20..fef81b8a9db6b970e2ade15befe2469cc1be701d 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -44,7 +44,7 @@ android {
 
     defaultConfig {
         applicationId "org.benoitharrault.plotter"
-        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/layout/keyboard.dart b/lib/layout/keyboard.dart
index 22cf398371deb1cc3ba8ca5da1a7981af9754f5e..33536402876df56dac117f23eb4c2882593566df 100644
--- a/lib/layout/keyboard.dart
+++ b/lib/layout/keyboard.dart
@@ -1,7 +1,7 @@
 import 'package:flutter/material.dart';
 
-import '../provider/data.dart';
-import '../utils/api.dart';
+import 'package:plotter/provider/data.dart';
+import 'package:plotter/utils/api.dart';
 
 class Keyboard {
   static Container buildWidget(Data myProvider) {
@@ -34,7 +34,7 @@ class Keyboard {
           padding: const EdgeInsets.all(0),
         ),
         child: Text(keyText,
-            style: TextStyle(
+            style: const TextStyle(
               fontSize: 60.0,
               fontWeight: FontWeight.w800,
             ),
@@ -48,8 +48,8 @@ class Keyboard {
     }
 
     return Container(
-        margin: EdgeInsets.symmetric(horizontal: 2),
-        padding: EdgeInsets.all(2),
+        margin: const EdgeInsets.symmetric(horizontal: 2),
+        padding: const EdgeInsets.all(2),
         child: Table(
           defaultVerticalAlignment: TableCellVerticalAlignment.middle,
           children: [
diff --git a/lib/main.dart b/lib/main.dart
index ab6bc3192fb7350c0d77d898ad8037cc25f83ded..6a1c1d8321c952f9132ced9b83c458b4324ed1ea 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -9,10 +9,12 @@ import 'screens/settings.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,10 +26,10 @@ class MyApp extends StatelessWidget {
             primaryColor: Colors.blue,
             visualDensity: VisualDensity.adaptivePlatformDensity,
           ),
-          home: Home(),
+          home: const Home(),
           routes: {
-            Home.id: (context) => Home(),
-            SettingsPage.id: (context) => SettingsPage(),
+            Home.id: (context) => const Home(),
+            SettingsPage.id: (context) => const SettingsPage(),
           },
         );
       }),
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index f69127791db25f9dae7505dd3c0be441720b8a8a..7136778a338b4b5d6782b6a8a972fe57017f4500 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -8,17 +8,19 @@ class Data extends ChangeNotifier {
 
   String defaultApiHost = '127.0.0.1';
 
-  getParameterValue(String parameterCode) {
+  String getParameterValue(String parameterCode) {
     switch (parameterCode) {
       case 'apiHost':
         {
           return _apiHost;
         }
     }
+
+    return '';
   }
 
   setParameterValue(String parameterCode, String parameterValue) async {
-    print('set parameter "' + parameterCode + '" to value "' + parameterValue + '"');
+    print('set parameter "$parameterCode" to value "$parameterValue"');
     switch (parameterCode) {
       case 'apiHost':
         {
@@ -32,7 +34,7 @@ class Data extends ChangeNotifier {
 
   void initParametersValues() async {
     final prefs = await SharedPreferences.getInstance();
-    setParameterValue('apiHost', prefs.getString('apiHost') ?? this.defaultApiHost);
+    setParameterValue('apiHost', prefs.getString('apiHost') ?? defaultApiHost);
   }
 
   String get apiHost => _apiHost;
@@ -43,7 +45,7 @@ class Data extends ChangeNotifier {
 
   String get apiStatus => _apiStatus;
   void updateApiStatus(String apiStatus) {
-    print('new API status: ' + apiStatus);
+    print('new API status: $apiStatus');
     _apiStatus = apiStatus;
     notifyListeners();
   }
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 064999e236d18fab3ee9e3388e91d1f73806787c..737a27291a793f72c4389b8616d2339496dfa32d 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -1,19 +1,21 @@
 import 'package:flutter/material.dart';
 import 'package:provider/provider.dart';
 
-import '../layout/keyboard.dart';
-import '../provider/data.dart';
-import '../screens/settings.dart';
-import '../utils/api.dart';
+import 'package:plotter/layout/keyboard.dart';
+import 'package:plotter/provider/data.dart';
+import 'package:plotter/screens/settings.dart';
+import 'package:plotter/utils/api.dart';
 
 class Home extends StatefulWidget {
   static const String id = 'home';
 
+  const Home({super.key});
+
   @override
-  _HomeState createState() => _HomeState();
+  HomeState createState() => HomeState();
 }
 
-class _HomeState extends State<Home> {
+class HomeState extends State<Home> {
   @override
   void initState() {
     super.initState();
@@ -28,15 +30,15 @@ class _HomeState extends State<Home> {
 
     return Scaffold(
         appBar: AppBar(
-          title: new Text('Stepper plotter assistant'),
+          title: const Text('Stepper plotter assistant'),
           actions: [
             IconButton(
-              icon: Icon(Icons.settings),
+              icon: const Icon(Icons.settings),
               onPressed: () {
                 Navigator.push(
                   context,
                   MaterialPageRoute(builder: (context) {
-                    return SettingsPage();
+                    return const SettingsPage();
                   }),
                 );
               },
@@ -53,9 +55,7 @@ class _HomeState extends State<Home> {
             children: [
               Keyboard.buildWidget(myProvider),
               TextButton(
-                child: Container(
-                  child: Text('get API status'),
-                ),
+                child: const Text('get API status'),
                 onPressed: () => Api.updateApiStatus(myProvider),
               ),
               Text(myProvider.apiStatus)
diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart
index 4c5ab4278a4b5d3777f1834a2f58ebdab5092380..886c375a2061e402315b1acf82c8d0eb6c9d528d 100644
--- a/lib/screens/settings.dart
+++ b/lib/screens/settings.dart
@@ -1,17 +1,18 @@
 import 'package:flutter/material.dart';
 import 'package:provider/provider.dart';
 
-import '../provider/data.dart';
+import 'package:plotter/provider/data.dart';
 
 class SettingsPage extends StatefulWidget {
+  const SettingsPage({super.key});
+
   static const String id = 'settings';
-  const SettingsPage({Key? key}) : super(key: key);
 
   @override
-  _SettingsPageState createState() => _SettingsPageState();
+  SettingsPageState createState() => SettingsPageState();
 }
 
-class _SettingsPageState extends State<SettingsPage> {
+class SettingsPageState extends State<SettingsPage> {
   TextEditingController apiHostFieldController = TextEditingController();
 
   @override
@@ -28,10 +29,10 @@ class _SettingsPageState extends State<SettingsPage> {
 
     return Scaffold(
       appBar: AppBar(
-        title: new Text('Stepper - settings'),
+        title: const Text('Stepper - settings'),
         actions: [
           IconButton(
-            icon: Icon(Icons.save),
+            icon: const Icon(Icons.save),
             onPressed: () {
               myProvider.setParameterValue('apiHost', apiHostFieldController.text);
               Navigator.pop(context);
@@ -47,7 +48,7 @@ class _SettingsPageState extends State<SettingsPage> {
         padding: const EdgeInsets.all(16.0),
         child: TextFormField(
           controller: apiHostFieldController,
-          decoration: InputDecoration(
+          decoration: const InputDecoration(
             border: UnderlineInputBorder(),
             labelText: 'API Host',
           ),
diff --git a/lib/utils/api.dart b/lib/utils/api.dart
index 10466f76824c7e9848449aff499bdb99a937eadd..eb394946784d0ad93520800f0f2f476ac8192b7e 100644
--- a/lib/utils/api.dart
+++ b/lib/utils/api.dart
@@ -1,7 +1,7 @@
 import 'dart:convert';
 import 'package:http/http.dart' as http;
 
-import '../provider/data.dart';
+import 'package:plotter/provider/data.dart';
 
 class Api {
   static Future<void> updateApiStatus(Data myProvider) async {
diff --git a/pubspec.lock b/pubspec.lock
index 03d03b7ec4f2de4d30b7b1fe558015e40c13bc5a..a8b4df1e54b9679d85e9c51aa7f3ca72b8e40cef 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -21,31 +21,39 @@ 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
@@ -55,10 +63,10 @@ packages:
     dependency: "direct main"
     description:
       name: http
-      sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
+      sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba
       url: "https://pub.dev"
     source: hosted
-    version: "1.1.0"
+    version: "1.2.0"
   http_parser:
     dependency: transitive
     description:
@@ -67,22 +75,30 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "4.0.2"
+  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:
@@ -95,10 +111,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:
@@ -111,10 +127,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:
@@ -127,34 +143,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:
@@ -167,42 +183,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
@@ -252,26 +268,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 ccd0ab6857debc1d86cda1f3dce6b9915f0ad977..5a06a4f9baf3ce6dfaae28330ac471696710a0c8 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,7 +1,7 @@
 name: plotter
 description: A plotter helper application.
 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
   http: ^1.1.0
 
+dev_dependencies:
+  flutter_lints: ^3.0.1
+
 flutter:
   uses-material-design: true
   assets: