From 400eb874fa7b78a552c46ee7eb1909cb41de5382 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Fri, 15 Nov 2024 15:38:04 +0100
Subject: [PATCH] Use ActivityParameters widgets from flutter_custom_toolbox

---
 .../metadata/android/en-US/changelogs/27.txt  |  1 +
 .../metadata/android/fr-FR/changelogs/27.txt  |  1 +
 lib/common/config/activity_page.dart          | 39 ++++++++---
 lib/config/application_config.dart            | 46 ++++++++++++-
 lib/config/default_activity_settings.dart     | 32 ---------
 lib/config/default_global_settings.dart       | 28 --------
 lib/cubit/activity/activity_cubit.dart        | 16 +++--
 .../settings/settings_activity_cubit.dart     | 62 -----------------
 .../settings/settings_activity_state.dart     | 15 -----
 lib/cubit/settings/settings_global_cubit.dart | 67 -------------------
 lib/cubit/settings/settings_global_state.dart | 15 -----
 lib/main.dart                                 |  9 +--
 lib/models/activity/activity.dart             | 21 +++---
 lib/models/settings/settings_activity.dart    | 42 ------------
 lib/models/settings/settings_global.dart      | 47 -------------
 pubspec.lock                                  |  6 +-
 pubspec.yaml                                  |  4 +-
 17 files changed, 105 insertions(+), 346 deletions(-)
 create mode 100644 fastlane/metadata/android/en-US/changelogs/27.txt
 create mode 100644 fastlane/metadata/android/fr-FR/changelogs/27.txt
 delete mode 100644 lib/config/default_activity_settings.dart
 delete mode 100644 lib/config/default_global_settings.dart
 delete mode 100644 lib/cubit/settings/settings_activity_cubit.dart
 delete mode 100644 lib/cubit/settings/settings_activity_state.dart
 delete mode 100644 lib/cubit/settings/settings_global_cubit.dart
 delete mode 100644 lib/cubit/settings/settings_global_state.dart
 delete mode 100644 lib/models/settings/settings_activity.dart
 delete mode 100644 lib/models/settings/settings_global.dart

diff --git a/fastlane/metadata/android/en-US/changelogs/27.txt b/fastlane/metadata/android/en-US/changelogs/27.txt
new file mode 100644
index 0000000..c20ed39
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/27.txt
@@ -0,0 +1 @@
+Use ActivityParameters widgets from flutter_custom_toolbox.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/27.txt b/fastlane/metadata/android/fr-FR/changelogs/27.txt
new file mode 100644
index 0000000..f732ebd
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/27.txt
@@ -0,0 +1 @@
+Utilisation des widgets ActivityParameters de flutter_custom_toolbox.
diff --git a/lib/common/config/activity_page.dart b/lib/common/config/activity_page.dart
index 5b8b165..1c1c3db 100644
--- a/lib/common/config/activity_page.dart
+++ b/lib/common/config/activity_page.dart
@@ -5,15 +5,18 @@ import 'package:plotter/common/ui/pages/home.dart';
 import 'package:plotter/common/ui/pages/player.dart';
 import 'package:plotter/common/ui/pages/remote_control.dart';
 
+import 'package:plotter/cubit/activity/activity_cubit.dart';
+import 'package:plotter/models/activity/activity.dart';
+
 class ActivityPageItem {
   final String code;
   final Icon icon;
-  final Widget page;
+  final Widget Function({required Activity currentActivity})? builder;
 
   const ActivityPageItem({
     required this.code,
     required this.icon,
-    required this.page,
+    required this.builder,
   });
 }
 
@@ -21,27 +24,33 @@ class ActivityPage {
   static const bool displayBottomNavBar = true;
 
   static const indexHome = 0;
-  static const pageHome = ActivityPageItem(
+  static final ActivityPageItem pageHome = ActivityPageItem(
     code: 'page_home',
     icon: Icon(UniconsLine.home),
-    page: PageHome(),
+    builder: ({required Activity currentActivity}) {
+      return PageHome();
+    },
   );
 
   static const indexPlayer = 1;
-  static const pagePlayer = ActivityPageItem(
+  static final ActivityPageItem pagePlayer = ActivityPageItem(
     code: 'page_player',
     icon: Icon(UniconsLine.star),
-    page: PagePlayer(),
+    builder: ({required Activity currentActivity}) {
+      return PagePlayer();
+    },
   );
 
   static const indexRemoteControl = 2;
-  static const pageRemoteControl = ActivityPageItem(
+  static final ActivityPageItem pageRemoteControl = ActivityPageItem(
     code: 'page_remote_control',
     icon: Icon(UniconsLine.star),
-    page: PageRemoteControl(),
+    builder: ({required Activity currentActivity}) {
+      return PageRemoteControl();
+    },
   );
 
-  static const Map<int, ActivityPageItem> items = {
+  static final Map<int, ActivityPageItem> items = {
     indexHome: pageHome,
     indexPlayer: pagePlayer,
     indexRemoteControl: pageRemoteControl,
@@ -54,6 +63,16 @@ class ActivityPage {
   }
 
   static Widget getWidget(int pageIndex) {
-    return items[pageIndex]?.page ?? pageHome.page;
+    return BlocBuilder<ActivityCubit, ActivityState>(
+      builder: (BuildContext context, ActivityState activityState) {
+        final Activity currentActivity = activityState.currentActivity;
+
+        if (items.keys.contains(pageIndex)) {
+          return items[pageIndex]?.builder!(currentActivity: currentActivity) ?? Text('oups');
+        } else {
+          return getWidget(defaultPageIndex);
+        }
+      },
+    );
   }
 }
diff --git a/lib/config/application_config.dart b/lib/config/application_config.dart
index 81de9d3..51f1ec7 100644
--- a/lib/config/application_config.dart
+++ b/lib/config/application_config.dart
@@ -1,3 +1,47 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
+
+import 'package:plotter/common/cubit/nav/nav_cubit_pages.dart';
+
+import 'package:plotter/cubit/activity/activity_cubit.dart';
+
 class ApplicationConfig {
-  static const String appTitle = 'Stepper plotter assistant';
+  // plotter type
+  static const String parameterCodePlotterType = 'plotterType';
+  static const String plotterTypeNone = 'none';
+  static const String plotterTypeRadial = 'radial';
+  static const String plotterTypeAxial = 'axial';
+
+  static final ApplicationConfigDefinition config = ApplicationConfigDefinition(
+    appTitle: 'Stepper plotter assistant',
+    activitySettings: [
+      // plotter type
+      ApplicationSettingsParameter(
+        code: parameterCodePlotterType,
+        values: [
+          ApplicationSettingsParameterItemValue(
+            value: plotterTypeNone,
+            isDefault: true,
+          ),
+          ApplicationSettingsParameterItemValue(
+            value: plotterTypeRadial,
+          ),
+          ApplicationSettingsParameterItemValue(
+            value: plotterTypeAxial,
+          ),
+        ],
+      ),
+    ],
+    startNewActivity: (BuildContext context) {
+      BlocProvider.of<ActivityCubit>(context).startNewActivity(context);
+      BlocProvider.of<NavCubitPage>(context).goToPageHome();
+    },
+    deleteCurrentActivity: (BuildContext context) {
+      BlocProvider.of<ActivityCubit>(context).deleteSavedActivity();
+    },
+    resumeActivity: (BuildContext context) {
+      BlocProvider.of<ActivityCubit>(context).resumeSavedActivity();
+      BlocProvider.of<NavCubitPage>(context).goToPageHome();
+    },
+  );
 }
diff --git a/lib/config/default_activity_settings.dart b/lib/config/default_activity_settings.dart
deleted file mode 100644
index 3f4d852..0000000
--- a/lib/config/default_activity_settings.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
-
-class DefaultActivitySettings {
-  // available game parameters codes
-  static const String parameterCodePlotterType = 'plotterType';
-  static const List<String> availableParameters = [
-    parameterCodePlotterType,
-  ];
-
-  // plotter type: available values
-  static const String plotterTypeNone = 'none';
-  static const String plotterTypeRadial = 'radial';
-  static const String plotterTypeAxial = 'axial';
-  static const List<String> allowedPlotterTypeValues = [
-    plotterTypeNone,
-    plotterTypeRadial,
-    plotterTypeAxial,
-  ];
-  // items count: default value
-  static const String defaultPlotterTypeValue = plotterTypeNone;
-
-  // available values from parameter code
-  static List<String> getAvailableValues(String parameterCode) {
-    switch (parameterCode) {
-      case parameterCodePlotterType:
-        return DefaultActivitySettings.allowedPlotterTypeValues;
-    }
-
-    printlog('Did not find any available value for game parameter "$parameterCode".');
-    return [];
-  }
-}
diff --git a/lib/config/default_global_settings.dart b/lib/config/default_global_settings.dart
deleted file mode 100644
index d92229c..0000000
--- a/lib/config/default_global_settings.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
-
-class DefaultGlobalSettings {
-  // available global parameters codes
-  static const String parameterCodeSkin = 'skin';
-  static const List<String> availableParameters = [
-    parameterCodeSkin,
-  ];
-
-  // skin: available values
-  static const String skinValueDefault = 'default';
-  static const List<String> allowedSkinValues = [
-    skinValueDefault,
-  ];
-  // skin: default value
-  static const String defaultSkinValue = skinValueDefault;
-
-  // available values from parameter code
-  static List<String> getAvailableValues(String parameterCode) {
-    switch (parameterCode) {
-      case parameterCodeSkin:
-        return DefaultGlobalSettings.allowedSkinValues;
-    }
-
-    printlog('Did not find any available value for global parameter "$parameterCode".');
-    return [];
-  }
-}
diff --git a/lib/cubit/activity/activity_cubit.dart b/lib/cubit/activity/activity_cubit.dart
index cca3910..473b3d4 100644
--- a/lib/cubit/activity/activity_cubit.dart
+++ b/lib/cubit/activity/activity_cubit.dart
@@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
 import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
 
 import 'package:plotter/models/activity/activity.dart';
-import 'package:plotter/models/settings/settings_global.dart';
 
 part 'activity_state.dart';
 
@@ -21,7 +20,7 @@ class ActivityCubit extends HydratedCubit<ActivityState> {
   void refresh() {
     final Activity activity = Activity(
       // Settings
-      globalSettings: state.currentActivity.globalSettings,
+      activitySettings: state.currentActivity.activitySettings,
       // State
       isRunning: state.currentActivity.isRunning,
       // Base data
@@ -34,12 +33,13 @@ class ActivityCubit extends HydratedCubit<ActivityState> {
     updateState(activity);
   }
 
-  void startNewActivity({
-    required GlobalSettings globalSettings,
-  }) {
+  void startNewActivity(BuildContext context) {
+    final ActivitySettingsCubit activitySettingsCubit =
+        BlocProvider.of<ActivitySettingsCubit>(context);
+
     final Activity newActivity = Activity.createNew(
       // Settings
-      globalSettings: globalSettings,
+      activitySettings: activitySettingsCubit.state.settings,
     );
 
     newActivity.dump();
@@ -48,6 +48,10 @@ class ActivityCubit extends HydratedCubit<ActivityState> {
     refresh();
   }
 
+  bool canBeResumed() {
+    return state.currentActivity.canBeResumed;
+  }
+
   void quitActivity() {
     state.currentActivity.isRunning = false;
     refresh();
diff --git a/lib/cubit/settings/settings_activity_cubit.dart b/lib/cubit/settings/settings_activity_cubit.dart
deleted file mode 100644
index a3d1c72..0000000
--- a/lib/cubit/settings/settings_activity_cubit.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
-
-import 'package:plotter/config/default_activity_settings.dart';
-import 'package:plotter/models/settings/settings_activity.dart';
-
-part 'settings_activity_state.dart';
-
-class ActivitySettingsCubit extends HydratedCubit<ActivitySettingsState> {
-  ActivitySettingsCubit()
-      : super(ActivitySettingsState(settings: ActivitySettings.createDefault()));
-
-  void setValues({
-    String? plotterType,
-  }) {
-    emit(
-      ActivitySettingsState(
-        settings: ActivitySettings(
-          plotterType: plotterType ?? state.settings.plotterType,
-        ),
-      ),
-    );
-  }
-
-  String getParameterValue(String code) {
-    switch (code) {
-      case DefaultActivitySettings.parameterCodePlotterType:
-        return ActivitySettings.getPlotterTypeValueFromUnsafe(state.settings.plotterType);
-    }
-
-    return '';
-  }
-
-  void setParameterValue(String code, String value) {
-    final String plotterType = code == DefaultActivitySettings.parameterCodePlotterType
-        ? value
-        : getParameterValue(DefaultActivitySettings.parameterCodePlotterType);
-
-    setValues(
-      plotterType: plotterType,
-    );
-  }
-
-  @override
-  ActivitySettingsState? fromJson(Map<String, dynamic> json) {
-    final String plotterType =
-        json[DefaultActivitySettings.parameterCodePlotterType] as String;
-
-    return ActivitySettingsState(
-      settings: ActivitySettings(
-        plotterType: plotterType,
-      ),
-    );
-  }
-
-  @override
-  Map<String, dynamic>? toJson(ActivitySettingsState state) {
-    return <String, dynamic>{
-      DefaultActivitySettings.parameterCodePlotterType: state.settings.plotterType,
-    };
-  }
-}
diff --git a/lib/cubit/settings/settings_activity_state.dart b/lib/cubit/settings/settings_activity_state.dart
deleted file mode 100644
index 2b2de42..0000000
--- a/lib/cubit/settings/settings_activity_state.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-part of 'settings_activity_cubit.dart';
-
-@immutable
-class ActivitySettingsState extends Equatable {
-  const ActivitySettingsState({
-    required this.settings,
-  });
-
-  final ActivitySettings settings;
-
-  @override
-  List<dynamic> get props => <dynamic>[
-        settings,
-      ];
-}
diff --git a/lib/cubit/settings/settings_global_cubit.dart b/lib/cubit/settings/settings_global_cubit.dart
deleted file mode 100644
index dfe550e..0000000
--- a/lib/cubit/settings/settings_global_cubit.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
-
-import 'package:plotter/config/default_global_settings.dart';
-import 'package:plotter/models/settings/settings_global.dart';
-
-part 'settings_global_state.dart';
-
-class GlobalSettingsCubit extends HydratedCubit<GlobalSettingsState> {
-  GlobalSettingsCubit() : super(GlobalSettingsState(settings: GlobalSettings.createDefault()));
-
-  void setValues({
-    String? skin,
-    String? apiHost,
-  }) {
-    emit(
-      GlobalSettingsState(
-        settings: GlobalSettings(
-          skin: skin ?? state.settings.skin,
-          apiHost: apiHost ?? state.settings.apiHost,
-        ),
-      ),
-    );
-  }
-
-  String getParameterValue(String code) {
-    switch (code) {
-      case DefaultGlobalSettings.parameterCodeSkin:
-        return GlobalSettings.getSkinValueFromUnsafe(state.settings.skin);
-      case 'apiHost':
-        return state.settings.apiHost;
-    }
-    return '';
-  }
-
-  void setParameterValue(String code, String value) {
-    final String skin = (code == DefaultGlobalSettings.parameterCodeSkin)
-        ? value
-        : getParameterValue(DefaultGlobalSettings.parameterCodeSkin);
-    final String apiHost = (code == 'apiHost') ? value : getParameterValue('apiHost');
-
-    setValues(
-      skin: skin,
-      apiHost: apiHost,
-    );
-  }
-
-  @override
-  GlobalSettingsState? fromJson(Map<String, dynamic> json) {
-    final String skin = json[DefaultGlobalSettings.parameterCodeSkin] as String;
-    final String apiHost = json['apiHost'] as String;
-
-    return GlobalSettingsState(
-      settings: GlobalSettings(
-        skin: skin,
-        apiHost: apiHost,
-      ),
-    );
-  }
-
-  @override
-  Map<String, dynamic>? toJson(GlobalSettingsState state) {
-    return <String, dynamic>{
-      DefaultGlobalSettings.parameterCodeSkin: state.settings.skin,
-    };
-  }
-}
diff --git a/lib/cubit/settings/settings_global_state.dart b/lib/cubit/settings/settings_global_state.dart
deleted file mode 100644
index ebcddd7..0000000
--- a/lib/cubit/settings/settings_global_state.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-part of 'settings_global_cubit.dart';
-
-@immutable
-class GlobalSettingsState extends Equatable {
-  const GlobalSettingsState({
-    required this.settings,
-  });
-
-  final GlobalSettings settings;
-
-  @override
-  List<dynamic> get props => <dynamic>[
-        settings,
-      ];
-}
diff --git a/lib/main.dart b/lib/main.dart
index 3fb2ddd..d6396af 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -9,8 +9,6 @@ import 'package:plotter/common/cubit/nav/nav_cubit_screens.dart';
 
 import 'package:plotter/config/application_config.dart';
 import 'package:plotter/cubit/activity/activity_cubit.dart';
-import 'package:plotter/cubit/settings/settings_activity_cubit.dart';
-import 'package:plotter/cubit/settings/settings_global_cubit.dart';
 import 'package:plotter/ui/skeleton.dart';
 
 void main() async {
@@ -56,17 +54,14 @@ class MyApp extends StatelessWidget {
         BlocProvider<ActivityCubit>(
           create: (context) => ActivityCubit(),
         ),
-        BlocProvider<GlobalSettingsCubit>(
-          create: (context) => GlobalSettingsCubit(),
-        ),
         BlocProvider<ActivitySettingsCubit>(
-          create: (context) => ActivitySettingsCubit(),
+          create: (context) => ActivitySettingsCubit(appConfig: ApplicationConfig.config),
         ),
       ],
       child: BlocBuilder<ApplicationThemeModeCubit, ApplicationThemeModeState>(
         builder: (BuildContext context, ApplicationThemeModeState state) {
           return MaterialApp(
-            title: ApplicationConfig.appTitle,
+            title: ApplicationConfig.config.appTitle,
             home: const SkeletonScreen(),
 
             // Theme stuff
diff --git a/lib/models/activity/activity.dart b/lib/models/activity/activity.dart
index 1c0058e..55f95f8 100644
--- a/lib/models/activity/activity.dart
+++ b/lib/models/activity/activity.dart
@@ -1,11 +1,11 @@
 import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
 
-import 'package:plotter/models/settings/settings_global.dart';
+import 'package:plotter/config/application_config.dart';
 
 class Activity {
   Activity({
     // Settings
-    required this.globalSettings,
+    required this.activitySettings,
 
     // State
     this.isRunning = false,
@@ -18,7 +18,7 @@ class Activity {
   });
 
   // Settings
-  final GlobalSettings globalSettings;
+  final ActivitySettings activitySettings;
 
   // State
   bool isRunning;
@@ -32,20 +32,21 @@ class Activity {
   factory Activity.createNull() {
     return Activity(
       // Settings
-      globalSettings: GlobalSettings.createDefault(),
+      activitySettings: ActivitySettings.createDefault(appConfig: ApplicationConfig.config),
       // Base data
       apiHost: '',
     );
   }
 
   factory Activity.createNew({
-    GlobalSettings? globalSettings,
+    ActivitySettings? activitySettings,
   }) {
-    final GlobalSettings newGlobalSettings = globalSettings ?? GlobalSettings.createDefault();
+    final ActivitySettings newActivitySettings = activitySettings ??
+        ActivitySettings.createDefault(appConfig: ApplicationConfig.config);
 
     return Activity(
       // Settings
-      globalSettings: newGlobalSettings,
+      activitySettings: newActivitySettings,
       // State
       isRunning: true,
       // Base data
@@ -53,13 +54,15 @@ class Activity {
     );
   }
 
+  bool get canBeResumed => false;
+
   void dump() {
     printlog('');
     printlog('## Current activity dump:');
     printlog('');
     printlog('$Activity:');
     printlog('  Settings');
-    globalSettings.dump();
+    activitySettings.dump();
     printlog('  State');
     printlog('    isRunning: $isRunning');
     printlog('  Base data');
@@ -77,7 +80,7 @@ class Activity {
   Map<String, dynamic>? toJson() {
     return <String, dynamic>{
       // Settings
-      'globalSettings': globalSettings.toJson(),
+      'activitySettings': activitySettings.toJson(),
       // State
       'isRunning': isRunning,
       // Base data
diff --git a/lib/models/settings/settings_activity.dart b/lib/models/settings/settings_activity.dart
deleted file mode 100644
index 4b85637..0000000
--- a/lib/models/settings/settings_activity.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
-
-import 'package:plotter/config/default_activity_settings.dart';
-
-class ActivitySettings {
-  final String plotterType;
-
-  ActivitySettings({
-    required this.plotterType,
-  });
-
-  static String getPlotterTypeValueFromUnsafe(String plotterType) {
-    if (DefaultActivitySettings.allowedPlotterTypeValues.contains(plotterType)) {
-      return plotterType;
-    }
-
-    return DefaultActivitySettings.defaultPlotterTypeValue;
-  }
-
-  factory ActivitySettings.createDefault() {
-    return ActivitySettings(
-      plotterType: DefaultActivitySettings.defaultPlotterTypeValue,
-    );
-  }
-
-  void dump() {
-    printlog('$ActivitySettings:');
-    printlog('  ${DefaultActivitySettings.parameterCodePlotterType}: $plotterType');
-    printlog('');
-  }
-
-  @override
-  String toString() {
-    return '$ActivitySettings(${toJson()})';
-  }
-
-  Map<String, dynamic>? toJson() {
-    return <String, dynamic>{
-      DefaultActivitySettings.parameterCodePlotterType: plotterType,
-    };
-  }
-}
diff --git a/lib/models/settings/settings_global.dart b/lib/models/settings/settings_global.dart
deleted file mode 100644
index 040dfe6..0000000
--- a/lib/models/settings/settings_global.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
-
-import 'package:plotter/config/default_global_settings.dart';
-
-class GlobalSettings {
-  String skin;
-  String apiHost;
-
-  GlobalSettings({
-    required this.skin,
-    required this.apiHost,
-  });
-
-  static String getSkinValueFromUnsafe(String skin) {
-    if (DefaultGlobalSettings.allowedSkinValues.contains(skin)) {
-      return skin;
-    }
-
-    return DefaultGlobalSettings.defaultSkinValue;
-  }
-
-  factory GlobalSettings.createDefault() {
-    return GlobalSettings(
-      skin: DefaultGlobalSettings.defaultSkinValue,
-      apiHost: '',
-    );
-  }
-
-  void dump() {
-    printlog('$GlobalSettings:');
-    printlog('  ${DefaultGlobalSettings.parameterCodeSkin}: $skin');
-    printlog('  apiHost: $apiHost');
-    printlog('');
-  }
-
-  @override
-  String toString() {
-    return '$GlobalSettings(${toJson()})';
-  }
-
-  Map<String, dynamic>? toJson() {
-    return <String, dynamic>{
-      DefaultGlobalSettings.parameterCodeSkin: skin,
-      'apiHost': apiHost,
-    };
-  }
-}
diff --git a/pubspec.lock b/pubspec.lock
index 9203cf6..d8427bb 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -122,11 +122,11 @@ packages:
     dependency: "direct main"
     description:
       path: "."
-      ref: "0.4.0"
-      resolved-ref: eb9c090bd00d73324eab8737f74b3339cc24c9e8
+      ref: "0.5.0"
+      resolved-ref: b8164a50489ba981ea57d9f02e2334f09cb8c6a7
       url: "https://git.harrault.fr/android/flutter-toolbox.git"
     source: git
-    version: "0.4.0"
+    version: "0.5.0"
   flutter_lints:
     dependency: "direct dev"
     description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 2a79f1b..1ef2828 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -3,7 +3,7 @@ description: A plotter helper application.
 
 publish_to: "none"
 
-version: 0.3.2+26
+version: 0.4.0+27
 
 environment:
   sdk: "^3.0.0"
@@ -16,7 +16,7 @@ dependencies:
   flutter_custom_toolbox:
     git:
       url: https://git.harrault.fr/android/flutter-toolbox.git
-      ref: 0.4.0
+      ref: 0.5.0
 
   # specific
   http: ^1.1.0
-- 
GitLab