diff --git a/assets/ui/button_back.png b/assets/ui/button_back.png deleted file mode 100644 index 51d7a01d171f7d7f047ecf9dee2d7ceee23b310d..0000000000000000000000000000000000000000 Binary files a/assets/ui/button_back.png and /dev/null differ diff --git a/assets/ui/button_delete_saved_game.png b/assets/ui/button_delete_saved_game.png deleted file mode 100644 index 4ca5b749c208c4b7eac2a4b141a1bd918d7cb98f..0000000000000000000000000000000000000000 Binary files a/assets/ui/button_delete_saved_game.png and /dev/null differ diff --git a/assets/ui/button_resume_game.png b/assets/ui/button_resume_game.png deleted file mode 100644 index 2fe433b7d18a39880a14e3f0af18cb75c4ccbaed..0000000000000000000000000000000000000000 Binary files a/assets/ui/button_resume_game.png and /dev/null differ diff --git a/assets/ui/button_start.png b/assets/ui/button_start.png deleted file mode 100644 index 23c7a4f670de19ffac455d6c510c3c53653a048b..0000000000000000000000000000000000000000 Binary files a/assets/ui/button_start.png and /dev/null differ diff --git a/fastlane/metadata/android/en-US/changelogs/70.txt b/fastlane/metadata/android/en-US/changelogs/70.txt new file mode 100644 index 0000000000000000000000000000000000000000..e41f2c12ae80f51efe37178685ea209ed3856f25 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/70.txt @@ -0,0 +1 @@ +Use activity buttons widgets from flutter_custom_toolbox. diff --git a/fastlane/metadata/android/fr-FR/changelogs/70.txt b/fastlane/metadata/android/fr-FR/changelogs/70.txt new file mode 100644 index 0000000000000000000000000000000000000000..f58100d11c19de935acc57e881483df579d32ffc --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/70.txt @@ -0,0 +1 @@ +Utilisation des boutons d'activité à partir du package flutter_custom_toolbox. diff --git a/lib/common/ui/nav/global_app_bar.dart b/lib/common/ui/nav/global_app_bar.dart index d7589f2550b8cba2b30181b0f89d28dd53e6eb60..6730c2be7c42c10f7a0e4c6b38487baee9fd3cef 100644 --- a/lib/common/ui/nav/global_app_bar.dart +++ b/lib/common/ui/nav/global_app_bar.dart @@ -22,17 +22,12 @@ class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget { final List<Widget> menuActions = []; if (currentActivity.isRunning && !currentActivity.isFinished) { - menuActions.add(StyledButton( - color: Colors.red, + menuActions.add(ActivityButtonQuit( onPressed: () {}, onLongPress: () { BlocProvider.of<ActivityCubit>(context).quitActivity(); BlocProvider.of<NavCubitPage>(context).goToPageHome(); }, - child: const Image( - image: AssetImage('assets/ui/button_back.png'), - fit: BoxFit.fill, - ), )); } else { if (pageIndex == Screen.indexActivity) { diff --git a/lib/common/ui/pages/parameters.dart b/lib/common/ui/pages/parameters.dart index 4f76a4f5959ccca45362cda2e3e0ce5375709738..2a78f0fd1a9ae2782bc19f56c88189880a3a20a0 100644 --- a/lib/common/ui/pages/parameters.dart +++ b/lib/common/ui/pages/parameters.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; +import 'package:puzzlegame/common/cubit/nav/nav_cubit_pages.dart'; import 'package:puzzlegame/common/ui/parameters/parameter_widget.dart'; import 'package:puzzlegame/config/default_activity_settings.dart'; @@ -9,9 +10,6 @@ import 'package:puzzlegame/cubit/activity/activity_cubit.dart'; import 'package:puzzlegame/cubit/settings/settings_activity_cubit.dart'; import 'package:puzzlegame/cubit/settings/settings_global_cubit.dart'; import 'package:puzzlegame/models/activity/activity.dart'; -import 'package:puzzlegame/ui/widgets/actions/button_delete_saved_game.dart'; -import 'package:puzzlegame/ui/widgets/actions/button_game_start_new.dart'; -import 'package:puzzlegame/ui/widgets/actions/button_resume_saved_game.dart'; class PageParameters extends StatelessWidget { const PageParameters({super.key}); @@ -20,67 +18,92 @@ class PageParameters extends StatelessWidget { @override Widget build(BuildContext context) { - return BlocBuilder<ActivityCubit, ActivityState>( - builder: (BuildContext context, ActivityState activityState) { - final Activity currentActivity = activityState.currentActivity; - - final List<Widget> lines = []; - - // Game settings - for (String code in DefaultActivitySettings.availableParameters) { - lines.add(Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: buildParametersLine( - code: code, - isGlobal: false, - ), - )); - - lines.add(SizedBox(height: separatorHeight)); - } - - lines.add(Expanded( - child: SizedBox(height: separatorHeight), - )); - - if (currentActivity.canBeResumed == false) { - // Start new game - lines.add( - const AspectRatio( - aspectRatio: 3, - child: StartNewGameButton(), - ), - ); - } else { - // Resume game - lines.add(const AspectRatio( - aspectRatio: 3, - child: ResumeSavedGameButton(), - )); - // Delete saved game - lines.add(SizedBox.square( - dimension: MediaQuery.of(context).size.width / 5, - child: const DeleteSavedGameButton(), - )); - } - - lines.add(SizedBox(height: separatorHeight)); - - // Global settings - for (String code in DefaultGlobalSettings.availableParameters) { - lines.add(Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: buildParametersLine( - code: code, - isGlobal: true, - ), - )); - - lines.add(SizedBox(height: separatorHeight)); - } - - return Column( - children: lines, + return BlocBuilder<ActivitySettingsCubit, ActivitySettingsState>( + builder: (BuildContext context, ActivitySettingsState activitySettingsState) { + return BlocBuilder<GlobalSettingsCubit, GlobalSettingsState>( + builder: (BuildContext context, GlobalSettingsState globalSettingsState) { + return BlocBuilder<ActivityCubit, ActivityState>( + builder: (BuildContext context, ActivityState activityState) { + final Activity currentActivity = activityState.currentActivity; + + final List<Widget> lines = []; + + // Activity settings + for (String code in DefaultActivitySettings.availableParameters) { + lines.add(Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: buildParametersLine( + code: code, + isGlobal: false, + ), + )); + + lines.add(SizedBox(height: separatorHeight)); + } + + lines.add(Expanded( + child: SizedBox(height: separatorHeight), + )); + + if (currentActivity.canBeResumed == false) { + // Start new activity + lines.add( + AspectRatio( + aspectRatio: 3, + child: ActivityButtonStartNew( + onPressed: () { + BlocProvider.of<ActivityCubit>(context).startNewActivity( + activitySettings: activitySettingsState.settings, + globalSettings: globalSettingsState.settings, + ); + BlocProvider.of<NavCubitPage>(context).goToPageGame(); + }, + ), + ), + ); + } else { + // Resume activity + lines.add(AspectRatio( + aspectRatio: 3, + child: ActivityButtonResumeSaved( + onPressed: () { + BlocProvider.of<ActivityCubit>(context).resumeSavedActivity(); + BlocProvider.of<NavCubitPage>(context).goToPageGame(); + }, + ), + )); + // Delete saved activity + lines.add(SizedBox.square( + dimension: MediaQuery.of(context).size.width / 5, + child: ActivityButtonDeleteSaved( + onPressed: () { + BlocProvider.of<ActivityCubit>(context).deleteSavedActivity(); + }, + ), + )); + } + + lines.add(SizedBox(height: separatorHeight)); + + // Global settings + for (String code in DefaultGlobalSettings.availableParameters) { + lines.add(Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: buildParametersLine( + code: code, + isGlobal: true, + ), + )); + + lines.add(SizedBox(height: separatorHeight)); + } + + return Column( + children: lines, + ); + }, + ); + }, ); }, ); diff --git a/lib/main.dart b/lib/main.dart index d1ba4ad7f4da35e64cf29cb929bfd32bcd3a5977..f19960ec45c0ae0ee45100f4089c55e67a4aa995 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -94,12 +94,7 @@ class MyApp extends StatelessWidget { final List<String> assets = []; const List<String> gameImages = [ - 'button_back', - 'button_delete_saved_game', - 'button_random_pick', - 'button_resume_game', 'button_shuffle', - 'button_start', 'game_win', 'placeholder', 'tip_hidden', diff --git a/lib/ui/game/game_end.dart b/lib/ui/game/game_end.dart index dc42e01f555c04878a3c7c7d91fd92e88af5290d..ca4ac260b3a4b2e78014798d63cd7709437ecedc 100644 --- a/lib/ui/game/game_end.dart +++ b/lib/ui/game/game_end.dart @@ -1,9 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; +import 'package:puzzlegame/common/cubit/nav/nav_cubit_pages.dart'; + import 'package:puzzlegame/cubit/activity/activity_cubit.dart'; import 'package:puzzlegame/models/activity/activity.dart'; -import 'package:puzzlegame/ui/widgets/actions/button_game_quit.dart'; class GameEndWidget extends StatelessWidget { const GameEndWidget({super.key}); @@ -19,26 +20,39 @@ class GameEndWidget extends StatelessWidget { fit: BoxFit.fill, ); + final double width = MediaQuery.of(context).size.width; + return Container( margin: const EdgeInsets.all(2), padding: const EdgeInsets.all(2), child: Table( - defaultColumnWidth: const IntrinsicColumnWidth(), + defaultColumnWidth: FixedColumnWidth(width / 3.1), defaultVerticalAlignment: TableCellVerticalAlignment.bottom, children: [ TableRow( children: [ - const Column( + Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, children: [decorationImage], ), Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, children: [ currentActivity.animationInProgress == true ? decorationImage - : const QuitGameButton() + : ActivityButtonQuit( + onPressed: () { + BlocProvider.of<ActivityCubit>(context).quitActivity(); + BlocProvider.of<NavCubitPage>(context).goToPageHome(); + }, + ), ], ), - const Column( + Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, children: [decorationImage], ), ], diff --git a/lib/ui/widgets/actions/button_delete_saved_game.dart b/lib/ui/widgets/actions/button_delete_saved_game.dart deleted file mode 100644 index be61ef548553091497b2ed8d283751c195c1ec83..0000000000000000000000000000000000000000 --- a/lib/ui/widgets/actions/button_delete_saved_game.dart +++ /dev/null @@ -1,22 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; - -import 'package:puzzlegame/cubit/activity/activity_cubit.dart'; - -class DeleteSavedGameButton extends StatelessWidget { - const DeleteSavedGameButton({super.key}); - - @override - Widget build(BuildContext context) { - return StyledButton( - color: Colors.grey, - onPressed: () { - BlocProvider.of<ActivityCubit>(context).deleteSavedActivity(); - }, - child: const Image( - image: AssetImage('assets/ui/button_delete_saved_game.png'), - fit: BoxFit.fill, - ), - ); - } -} diff --git a/lib/ui/widgets/actions/button_game_quit.dart b/lib/ui/widgets/actions/button_game_quit.dart deleted file mode 100644 index 9f6c6f3a95a3d40b1a42599f4732dc2b85305056..0000000000000000000000000000000000000000 --- a/lib/ui/widgets/actions/button_game_quit.dart +++ /dev/null @@ -1,25 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; - -import 'package:puzzlegame/common/cubit/nav/nav_cubit_pages.dart'; - -import 'package:puzzlegame/cubit/activity/activity_cubit.dart'; - -class QuitGameButton extends StatelessWidget { - const QuitGameButton({super.key}); - - @override - Widget build(BuildContext context) { - return StyledButton( - color: Colors.red, - onPressed: () { - BlocProvider.of<ActivityCubit>(context).quitActivity(); - BlocProvider.of<NavCubitPage>(context).goToPageHome(); - }, - child: const Image( - image: AssetImage('assets/ui/button_back.png'), - fit: BoxFit.fill, - ), - ); - } -} diff --git a/lib/ui/widgets/actions/button_game_start_new.dart b/lib/ui/widgets/actions/button_game_start_new.dart deleted file mode 100644 index 77d2396dc70d11e07e339c56db8d649e8ca1c502..0000000000000000000000000000000000000000 --- a/lib/ui/widgets/actions/button_game_start_new.dart +++ /dev/null @@ -1,38 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; - -import 'package:puzzlegame/common/cubit/nav/nav_cubit_pages.dart'; - -import 'package:puzzlegame/cubit/activity/activity_cubit.dart'; -import 'package:puzzlegame/cubit/settings/settings_activity_cubit.dart'; -import 'package:puzzlegame/cubit/settings/settings_global_cubit.dart'; - -class StartNewGameButton extends StatelessWidget { - const StartNewGameButton({super.key}); - - @override - Widget build(BuildContext context) { - return BlocBuilder<ActivitySettingsCubit, ActivitySettingsState>( - builder: (BuildContext context, ActivitySettingsState activitySettingsState) { - return BlocBuilder<GlobalSettingsCubit, GlobalSettingsState>( - builder: (BuildContext context, GlobalSettingsState globalSettingsState) { - return StyledButton( - color: Colors.blue, - onPressed: () { - BlocProvider.of<ActivityCubit>(context).startNewActivity( - activitySettings: activitySettingsState.settings, - globalSettings: globalSettingsState.settings, - ); - BlocProvider.of<NavCubitPage>(context).goToPageGame(); - }, - child: const Image( - image: AssetImage('assets/ui/button_start.png'), - fit: BoxFit.fill, - ), - ); - }, - ); - }, - ); - } -} diff --git a/lib/ui/widgets/actions/button_resume_saved_game.dart b/lib/ui/widgets/actions/button_resume_saved_game.dart deleted file mode 100644 index 414cfa77ec77e5be405e3e4089254342149743b5..0000000000000000000000000000000000000000 --- a/lib/ui/widgets/actions/button_resume_saved_game.dart +++ /dev/null @@ -1,25 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; - -import 'package:puzzlegame/common/cubit/nav/nav_cubit_pages.dart'; - -import 'package:puzzlegame/cubit/activity/activity_cubit.dart'; - -class ResumeSavedGameButton extends StatelessWidget { - const ResumeSavedGameButton({super.key}); - - @override - Widget build(BuildContext context) { - return StyledButton( - color: Colors.blue, - onPressed: () { - BlocProvider.of<ActivityCubit>(context).resumeSavedActivity(); - BlocProvider.of<NavCubitPage>(context).goToPageGame(); - }, - child: const Image( - image: AssetImage('assets/ui/button_resume_game.png'), - fit: BoxFit.fill, - ), - ); - } -} diff --git a/pubspec.lock b/pubspec.lock index a09de9e46e3c63f2051b5a27bc56735d047b86f1..59645eafa1e752f26aebae0be555be5f8b1f8cc6 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -130,11 +130,11 @@ packages: dependency: "direct main" description: path: "." - ref: "0.3.0" - resolved-ref: b24e16ca0cf72bde23640c72020d5c9da2e00e62 + ref: "0.4.0" + resolved-ref: eb9c090bd00d73324eab8737f74b3339cc24c9e8 url: "https://git.harrault.fr/android/flutter-toolbox.git" source: git - version: "0.3.0" + version: "0.4.0" flutter_lints: dependency: "direct dev" description: diff --git a/pubspec.yaml b/pubspec.yaml index 1a9f74fe4a57913dc5746a3633f30b44eacb2f41..069cc2fc00edd141147d437821d32bb0b9bff283 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: A puzzle game application. publish_to: "none" -version: 0.4.1+69 +version: 0.4.2+70 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.3.0 + ref: 0.4.0 # specific image: ^4.1.3 diff --git a/resources/ui/images/button_back.svg b/resources/ui/images/button_back.svg deleted file mode 100644 index 018d8b734d2932028fbfce1643c4e888ff1b45b1..0000000000000000000000000000000000000000 --- a/resources/ui/images/button_back.svg +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path transform="matrix(1.3783 .61747 -.61747 1.3783 45.198 93.762)" d="m11.645-14.603-44.77-4.6003 26.369-36.472z" fill="#fff" stroke="#950e4f" stroke-linecap="round" stroke-linejoin="round" stroke-width="7.2832"/></svg> diff --git a/resources/ui/images/button_delete_saved_game.svg b/resources/ui/images/button_delete_saved_game.svg deleted file mode 100644 index c3f872e434052a6b4e7036b530ced8e6233508e4..0000000000000000000000000000000000000000 --- a/resources/ui/images/button_delete_saved_game.svg +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m76.652 23.303-3.6441 58.302c-0.28153 4.5103-4.0223 8.0241-8.5413 8.0241h-35.27c-4.5189 0-8.2598-3.5138-8.5413-8.0241l-3.6441-58.302h-5.4824c-1.7723 0-3.2093-1.437-3.2093-3.2093 0-1.773 1.437-3.2093 3.2093-3.2093h70.605c1.7723 0 3.2093 1.4363 3.2093 3.2093 0 1.7723-1.437 3.2093-3.2093 3.2093zm-6.8314 0h-45.979l3.0819 55.867c0.12535 2.268 2.0008 4.0433 4.2732 4.0433h31.268c2.2724 0 4.1478-1.7752 4.2732-4.0433zm-22.99 6.4188c1.6541 0 2.9952 1.3411 2.9952 2.9952v41.08c0 1.6541-1.3411 2.9952-2.9952 2.9952-1.6542 0-2.9952-1.3411-2.9952-2.9952v-41.08c0-1.6541 1.3411-2.9952 2.9952-2.9952zm-12.837 0c1.6756 0 3.0553 1.3181 3.1312 2.9921l1.8776 41.3c0.06665 1.4664-1.0681 2.7087-2.5345 2.7762-0.04011 0.0015-0.08024 0.0021-0.12108 0.0021-1.5595 0-2.8476-1.2193-2.9328-2.7774l-2.253-41.3c-0.08524-1.5646 1.114-2.9012 2.6779-2.9864 0.05157-0.0029 0.10317-0.0042 0.15474-0.0042zm25.675 0c1.5667 0 2.8361 1.2694 2.8361 2.8361 0 0.05156-6.87e-4 0.10317-0.0036 0.15474l-2.2416 41.088c-0.09171 1.6778-1.4786 2.991-3.1586 2.991-1.5667 0-2.8361-1.2694-2.8361-2.8361 0-0.05156 7.31e-4 -0.10315 0.0036-0.15474l2.2417-41.088c0.09172-1.6778 1.4786-2.991 3.1586-2.991zm-21.397-25.675h17.117c4.7265 0 8.5578 3.8313 8.5578 8.5578v4.2795h-34.231v-4.2795c0-4.7265 3.8313-8.5578 8.5578-8.5578zm0.42837 6.4188c-1.4184 0-2.5675 1.1491-2.5675 2.5675v3.8512h21.394v-3.8512c0-1.4184-1.1491-2.5675-2.5675-2.5675z" fill="#fff" fill-rule="evenodd" stroke="#050200"/></svg> diff --git a/resources/ui/images/button_resume_game.svg b/resources/ui/images/button_resume_game.svg deleted file mode 100644 index 2bf973276aefa564ecff7d6149899298344819f9..0000000000000000000000000000000000000000 --- a/resources/ui/images/button_resume_game.svg +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><g transform="translate(-5.618)" fill="#fff" stroke="#105ea2" stroke-linecap="round" stroke-linejoin="round"><path transform="matrix(-1.3783 -.61747 .61747 -1.3783 55.567 -.086035)" d="m11.645-14.603-44.77-4.6003 26.369-36.472z" stroke-width="7.2832"/><path d="m15.535 12.852 2e-3 67.973z" stroke-width="11"/></g></svg> diff --git a/resources/ui/images/button_start.svg b/resources/ui/images/button_start.svg deleted file mode 100644 index 4d7634a9f3fb559e590ee965e1341ae2634bf80f..0000000000000000000000000000000000000000 --- a/resources/ui/images/button_start.svg +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 93.665 93.676" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path transform="matrix(-1.3783 -.61747 .61747 -1.3783 46.954 -.086035)" d="m11.645-14.603-44.77-4.6003 26.369-36.472z" fill="#fff" stroke="#105ea2" stroke-linecap="round" stroke-linejoin="round" stroke-width="7.2832"/></svg>