Skip to content
Snippets Groups Projects
Commit b7b669f7 authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Use activity buttons widgets from flutter_custom_toolbox

parent 60ef2d72
No related branches found
No related tags found
1 merge request!89Resolve "Use activity buttons widgets from flutter_custom_toolbox"
Pipeline #6932 passed
This commit is part of merge request !89. Comments created here will be created in the context of that merge request.
Showing
with 93 additions and 193 deletions
assets/ui/button_back.png

2.37 KiB

assets/ui/button_delete_saved_game.png

7.65 KiB

assets/ui/button_resume_game.png

3.35 KiB

assets/ui/button_start.png

2.99 KiB

...@@ -22,17 +22,12 @@ class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget { ...@@ -22,17 +22,12 @@ class GlobalAppBar extends StatelessWidget implements PreferredSizeWidget {
final List<Widget> menuActions = []; final List<Widget> menuActions = [];
if (currentActivity.isRunning && !currentActivity.isFinished) { if (currentActivity.isRunning && !currentActivity.isFinished) {
menuActions.add(StyledButton( menuActions.add(ActivityButtonQuit(
color: Colors.red,
onPressed: () {}, onPressed: () {},
onLongPress: () { onLongPress: () {
BlocProvider.of<ActivityCubit>(context).quitActivity(); BlocProvider.of<ActivityCubit>(context).quitActivity();
BlocProvider.of<NavCubitPage>(context).goToPageHome(); BlocProvider.of<NavCubitPage>(context).goToPageHome();
}, },
child: const Image(
image: AssetImage('assets/ui/button_back.png'),
fit: BoxFit.fill,
),
)); ));
} else { } else {
if (pageIndex == Screen.indexActivity) { if (pageIndex == Screen.indexActivity) {
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:random/common/cubit/nav/nav_cubit_pages.dart';
import 'package:random/common/ui/parameters/parameter_widget.dart'; import 'package:random/common/ui/parameters/parameter_widget.dart';
import 'package:random/config/default_activity_settings.dart'; import 'package:random/config/default_activity_settings.dart';
...@@ -9,9 +10,6 @@ import 'package:random/cubit/activity/activity_cubit.dart'; ...@@ -9,9 +10,6 @@ import 'package:random/cubit/activity/activity_cubit.dart';
import 'package:random/cubit/settings/settings_activity_cubit.dart'; import 'package:random/cubit/settings/settings_activity_cubit.dart';
import 'package:random/cubit/settings/settings_global_cubit.dart'; import 'package:random/cubit/settings/settings_global_cubit.dart';
import 'package:random/models/activity/activity.dart'; import 'package:random/models/activity/activity.dart';
import 'package:random/ui/widgets/actions/button_delete_saved_game.dart';
import 'package:random/ui/widgets/actions/button_game_start_new.dart';
import 'package:random/ui/widgets/actions/button_resume_saved_game.dart';
class PageParameters extends StatelessWidget { class PageParameters extends StatelessWidget {
const PageParameters({super.key}); const PageParameters({super.key});
...@@ -20,13 +18,17 @@ class PageParameters extends StatelessWidget { ...@@ -20,13 +18,17 @@ class PageParameters extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocBuilder<ActivitySettingsCubit, ActivitySettingsState>(
builder: (BuildContext context, ActivitySettingsState activitySettingsState) {
return BlocBuilder<GlobalSettingsCubit, GlobalSettingsState>(
builder: (BuildContext context, GlobalSettingsState globalSettingsState) {
return BlocBuilder<ActivityCubit, ActivityState>( return BlocBuilder<ActivityCubit, ActivityState>(
builder: (BuildContext context, ActivityState activityState) { builder: (BuildContext context, ActivityState activityState) {
final Activity currentActivity = activityState.currentActivity; final Activity currentActivity = activityState.currentActivity;
final List<Widget> lines = []; final List<Widget> lines = [];
// Game settings // Activity settings
for (String code in DefaultActivitySettings.availableParameters) { for (String code in DefaultActivitySettings.availableParameters) {
lines.add(Row( lines.add(Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
...@@ -44,23 +46,40 @@ class PageParameters extends StatelessWidget { ...@@ -44,23 +46,40 @@ class PageParameters extends StatelessWidget {
)); ));
if (currentActivity.canBeResumed == false) { if (currentActivity.canBeResumed == false) {
// Start new game // Start new activity
lines.add( lines.add(
const AspectRatio( AspectRatio(
aspectRatio: 3, aspectRatio: 3,
child: StartNewGameButton(), child: ActivityButtonStartNew(
onPressed: () {
BlocProvider.of<ActivityCubit>(context).startNewActivity(
activitySettings: activitySettingsState.settings,
globalSettings: globalSettingsState.settings,
);
BlocProvider.of<NavCubitPage>(context).goToPageGame();
},
),
), ),
); );
} else { } else {
// Resume game // Resume activity
lines.add(const AspectRatio( lines.add(AspectRatio(
aspectRatio: 3, aspectRatio: 3,
child: ResumeSavedGameButton(), child: ActivityButtonResumeSaved(
onPressed: () {
BlocProvider.of<ActivityCubit>(context).resumeSavedActivity();
BlocProvider.of<NavCubitPage>(context).goToPageGame();
},
),
)); ));
// Delete saved game // Delete saved activity
lines.add(SizedBox.square( lines.add(SizedBox.square(
dimension: MediaQuery.of(context).size.width / 5, dimension: MediaQuery.of(context).size.width / 5,
child: const DeleteSavedGameButton(), child: ActivityButtonDeleteSaved(
onPressed: () {
BlocProvider.of<ActivityCubit>(context).deleteSavedActivity();
},
),
)); ));
} }
...@@ -84,6 +103,10 @@ class PageParameters extends StatelessWidget { ...@@ -84,6 +103,10 @@ class PageParameters extends StatelessWidget {
); );
}, },
); );
},
);
},
);
} }
List<Widget> buildParametersLine({ List<Widget> buildParametersLine({
......
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:random/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,
),
);
}
}
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:random/common/cubit/nav/nav_cubit_pages.dart';
import 'package:random/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,
),
);
}
}
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:random/common/cubit/nav/nav_cubit_pages.dart';
import 'package:random/cubit/activity/activity_cubit.dart';
import 'package:random/cubit/settings/settings_activity_cubit.dart';
import 'package:random/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,
),
);
},
);
},
);
}
}
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:random/common/cubit/nav/nav_cubit_pages.dart';
import 'package:random/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,
),
);
}
}
...@@ -186,11 +186,11 @@ packages: ...@@ -186,11 +186,11 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
path: "." path: "."
ref: "0.3.0" ref: "0.4.0"
resolved-ref: b24e16ca0cf72bde23640c72020d5c9da2e00e62 resolved-ref: eb9c090bd00d73324eab8737f74b3339cc24c9e8
url: "https://git.harrault.fr/android/flutter-toolbox.git" url: "https://git.harrault.fr/android/flutter-toolbox.git"
source: git source: git
version: "0.3.0" version: "0.4.0"
flutter_lints: flutter_lints:
dependency: "direct dev" dependency: "direct dev"
description: description:
......
...@@ -3,7 +3,7 @@ description: A random application, for testing purpose only. ...@@ -3,7 +3,7 @@ description: A random application, for testing purpose only.
publish_to: "none" publish_to: "none"
version: 1.3.1+72 version: 1.3.2+73
environment: environment:
sdk: "^3.0.0" sdk: "^3.0.0"
...@@ -16,7 +16,7 @@ dependencies: ...@@ -16,7 +16,7 @@ dependencies:
flutter_custom_toolbox: flutter_custom_toolbox:
git: git:
url: https://git.harrault.fr/android/flutter-toolbox.git url: https://git.harrault.fr/android/flutter-toolbox.git
ref: 0.3.0 ref: 0.4.0
# specific # specific
camera: ^0.11.0+2 camera: ^0.11.0+2
......
<?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>
<?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>
<?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>
<?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>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment