Skip to content

Commit 00a5f4b

Browse files
committed
Change the layout of the training page in team screen and do some tasks
1 parent 7a5ee23 commit 00a5f4b

25 files changed

+535
-457
lines changed

lib/ui/reusable_widgets/card_with_title.dart

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,19 @@ class CardWithTitle extends StatelessWidget {
55
const CardWithTitle({
66
super.key,
77
required this.title,
8-
required this.content,
8+
required this.child,
9+
this.color,
910
});
1011

1112
final Widget title;
12-
final Widget content;
13+
final Widget child;
14+
final Color? color;
1315

1416
@override
1517
Widget build(BuildContext context) {
1618
return Card(
1719
margin: const EdgeInsets.all(0),
20+
color: color,
1821
child: Padding(
1922
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 10),
2023
child: Column(
@@ -23,7 +26,7 @@ class CardWithTitle extends StatelessWidget {
2326
children: [
2427
title,
2528
const Gap(5),
26-
Expanded(child: content),
29+
Expanded(child: child),
2730
],
2831
),
2932
),

lib/ui/screens/main_screen/large/simulation_wizard/screens/__game_variant_screen.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class __GameVariantScreenState extends State<_GameVariantScreen> {
2929
Expanded(
3030
flex: 5,
3131
child: Material(
32-
color: Theme.of(context).colorScheme.surfaceContainerLow,
32+
color: Theme.of(context).colorScheme.surfaceContainer,
3333
child: ListView.builder(
3434
itemCount: widget.gameVariants.length,
3535
itemBuilder: (context, index) {

lib/ui/screens/main_screen/large/simulation_wizard/screens/__start_date_screen.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class _StartDateScreenState extends State<_StartDateScreen> {
3232
Expanded(
3333
flex: 5,
3434
child: Material(
35-
color: Theme.of(context).colorScheme.surfaceContainerLow,
35+
color: Theme.of(context).colorScheme.surfaceContainer,
3636
child: ListView.builder(
3737
itemCount: startDates.length,
3838
itemBuilder: (context, index) {

lib/ui/screens/main_screen/large/simulation_wizard/screens/__subteam_screen.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class _SubteamScreenState extends State<_SubteamScreen> {
2929
Expanded(
3030
flex: 5,
3131
child: Material(
32-
color: Theme.of(context).colorScheme.surfaceContainerLow,
32+
color: Theme.of(context).colorScheme.surfaceContainer,
3333
child: ListView.builder(
3434
itemCount: widget.subteamTypes.length,
3535
itemBuilder: (context, index) {

lib/ui/screens/simulation/large/dialogs/manage_partnerships/manage_partnerships_dialog.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ class _JumperTile extends StatelessWidget {
159159
return ListTile(
160160
leading: SimulationJumperImage(
161161
jumper: jumper,
162-
aspectRatio: 3 / 2,
162+
width: 50,
163163
),
164164
trailing: TextButton(
165165
onPressed: onAction,
@@ -170,7 +170,7 @@ class _JumperTile extends StatelessWidget {
170170
),
171171
title: Text(jumper.nameAndSurname()),
172172
subtitle: Text(
173-
getJumperLevelDescription(
173+
translateJumperLevelDescription(
174174
context: context,
175175
levelDescription: levelReport?.levelDescription,
176176
),

lib/ui/screens/simulation/large/dialogs/search_for_charges_jumpers/__list_tile.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class _ListTile extends StatelessWidget {
2020
selected: selected,
2121
leading: SimulationJumperImage(
2222
jumper: jumper,
23-
aspectRatio: 3 / 2,
23+
width: 50,
2424
),
2525
trailing: CountryFlag(
2626
country: jumper.country,
@@ -30,7 +30,7 @@ class _ListTile extends StatelessWidget {
3030
jumper.nameAndSurname(),
3131
),
3232
subtitle: Text(
33-
getJumperLevelDescription(
33+
translateJumperLevelDescription(
3434
context: context,
3535
levelDescription: levelReport?.levelDescription,
3636
),

lib/ui/screens/simulation/large/dialogs/search_for_charges_jumpers/search_for_charges_jumpers_dialog.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class _SearchForChargesJumpersDialogState extends State<SearchForChargesJumpersD
8383
children: [
8484
SearchBar(
8585
backgroundColor: WidgetStatePropertyAll(
86-
Theme.of(context).colorScheme.surfaceContainerLow,
86+
Theme.of(context).colorScheme.surfaceContainer,
8787
),
8888
overlayColor: WidgetStateColor.resolveWith((states) {
8989
if (states.contains(WidgetState.hovered)) {

lib/ui/screens/simulation/large/dialogs/set_up_trainings/set_up_trainings_dialog.dart

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import 'package:sj_manager/models/user_db/jumper/jumper.dart';
99
import 'package:sj_manager/ui/reusable_widgets/help_icon_button.dart';
1010
import 'package:sj_manager/ui/reusable_widgets/sjm_dialog_ok_pop_button.dart';
1111
import 'package:sj_manager/ui/screens/simulation/large/dialogs/set_up_trainings/set_up_trainings_are_you_sure_dialog.dart';
12-
import 'package:sj_manager/ui/screens/simulation/large/widgets/team/jumper_in_team_card/jumper_in_team_training_card.dart';
1312
import 'package:sj_manager/utils/show_dialog.dart';
1413

1514
class SetUpTrainingsDialog extends StatefulWidget {
@@ -102,20 +101,7 @@ class _SetUpTrainingsDialogState extends State<SetUpTrainingsDialog> {
102101
width: constraints.maxWidth,
103102
child: ListView(
104103
children: [
105-
for (var jumper in widget.jumpers)
106-
JumperInTeamTrainingCard(
107-
jumper: jumper,
108-
trainingConfig: _trainingConfigs[jumper]!,
109-
dynamicParams: database.jumpersDynamicParameters[jumper]!,
110-
onTrainingChange: (trainingConfig) {
111-
setState(() {
112-
_trainingConfigs[jumper] = trainingConfig;
113-
});
114-
},
115-
jumperRatings: widget.jumpersSimulationRatings[jumper]!,
116-
managerPointsCount: widget.managerPointsCount,
117-
hideTrainingRaport: true,
118-
),
104+
Placeholder(),
119105
],
120106
),
121107
),

lib/ui/screens/simulation/large/subscreens/__team_screen.dart

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class _TeamScreen extends StatefulWidget {
88
}
99

1010
class _TeamScreenState extends State<_TeamScreen> {
11-
var _selectedMode = TeamScreenJumperCardMode.overview;
11+
var _selectedMode = TeamScreenMode.overview;
1212

1313
@override
1414
Widget build(BuildContext context) {
@@ -18,48 +18,44 @@ class _TeamScreenState extends State<_TeamScreen> {
1818
database.actionsRepo.isCompleted(SimulationActionType.settingUpTraining);
1919
final jumpers = dbHelper.managerJumpers;
2020

21-
final jumpersBody = jumpers.isNotEmpty
21+
final noJumpersWidget = TeamScreenNoJumpersInfoWidget(
22+
mode: database.managerData.mode,
23+
searchForCandidates: () =>
24+
SearchForCandidatesCommand(context: context, database: database).execute(),
25+
);
26+
27+
final generalBody = jumpers.isNotEmpty
2228
? ListView(
2329
children: [
2430
for (var jumper in jumpers)
2531
AnimatedSize(
2632
duration: Durations.short1,
2733
curve: Curves.easeIn,
28-
child: TeamScreenJumperCard(
34+
child: JumperInTeamOverviewCard(
2935
jumper: jumper,
30-
mode: _selectedMode,
31-
onTrainingChange: (trainingConfig) {
32-
ChangeJumperTrainingCommand(
33-
context: context,
34-
database: database,
35-
jumper: jumper,
36-
trainingConfig: trainingConfig,
37-
).execute();
38-
},
36+
reports: database.jumpersReports[jumper]!,
3937
),
4038
),
4139
],
4240
)
43-
: TeamScreenNoJumpersInfoWidget(
44-
mode: database.managerData.mode,
41+
: noJumpersWidget;
42+
43+
final trainingBody = JumperTrainingManagerRow(noJumpersWidget: noJumpersWidget);
44+
45+
final bottomNavBar = database.managerData.mode == SimulationMode.personalCoach
46+
? TeamScreenPersonalCoachBottomBar(
47+
chargesCount: database.managerData.personalCoachTeam!.jumpers.length,
48+
chargesLimit: sjmManagerChargesLimit,
4549
searchForCandidates: () =>
4650
SearchForCandidatesCommand(context: context, database: database)
4751
.execute(),
48-
);
52+
managePartnerships: () =>
53+
ManagePartnershipsCommand(context: context, database: database).execute(),
54+
)
55+
: null;
4956

5057
return Scaffold(
51-
bottomNavigationBar: database.managerData.mode == SimulationMode.personalCoach
52-
? TeamScreenPersonalCoachBottomBar(
53-
chargesCount: database.managerData.personalCoachTeam!.jumpers.length,
54-
chargesLimit: sjmManagerChargesLimit,
55-
searchForCandidates: () =>
56-
SearchForCandidatesCommand(context: context, database: database)
57-
.execute(),
58-
managePartnerships: () =>
59-
ManagePartnershipsCommand(context: context, database: database)
60-
.execute(),
61-
)
62-
: null,
58+
bottomNavigationBar: bottomNavBar,
6359
body: Column(
6460
children: [
6561
SizedBox(
@@ -93,12 +89,12 @@ class _TeamScreenState extends State<_TeamScreen> {
9389
SegmentedButton(
9490
segments: const [
9591
ButtonSegment(
96-
value: TeamScreenJumperCardMode.overview,
92+
value: TeamScreenMode.overview,
9793
label: Text('Ogólnie'),
9894
icon: Icon(Symbols.dashboard),
9995
),
10096
ButtonSegment(
101-
value: TeamScreenJumperCardMode.training,
97+
value: TeamScreenMode.training,
10298
label: Text('Trening'),
10399
icon: Icon(Symbols.fitness_center),
104100
),
@@ -139,10 +135,15 @@ class _TeamScreenState extends State<_TeamScreen> {
139135
),
140136
const Gap(15),
141137
Expanded(
142-
child: jumpersBody,
138+
child: _selectedMode == TeamScreenMode.overview ? generalBody : trainingBody,
143139
),
144140
],
145141
),
146142
);
147143
}
148144
}
145+
146+
enum TeamScreenMode {
147+
overview,
148+
training,
149+
}

lib/ui/screens/simulation/large/subscreens/home/__next_competitions_card.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class _NextCompetitionCard extends StatelessWidget {
2929
),
3030
],
3131
),
32-
content: Column(
32+
child: Column(
3333
mainAxisAlignment: MainAxisAlignment.start,
3434
crossAxisAlignment: CrossAxisAlignment.start,
3535
children: [

lib/ui/screens/simulation/large/subscreens/home/__team_overview_card.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class _TeamOverviewCard extends StatelessWidget {
6969
),
7070
],
7171
),
72-
content: Center(child: content),
72+
child: Center(child: content),
7373
);
7474
}
7575
}
Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,51 @@
11
import 'package:flutter/material.dart';
22
import 'package:provider/provider.dart';
3-
import 'package:sj_manager/l10n/helpers.dart';
43
import 'package:sj_manager/models/user_db/jumper/jumper.dart';
5-
import 'package:sj_manager/ui/responsiveness/ui_constants.dart';
64
import 'package:sj_manager/ui/reusable_widgets/database_item_images/db_item_image.dart';
7-
import 'package:sj_manager/ui/reusable_widgets/database_item_images/item_image_not_found_placeholder.dart';
8-
import 'package:sj_manager/ui/screens/database_editor/large/dialogs/item_image_help_dialog.dart';
95

106
class SimulationJumperImage extends StatelessWidget {
117
const SimulationJumperImage({
128
super.key,
139
required this.jumper,
1410
this.customImage,
15-
this.aspectRatio,
16-
});
11+
this.width,
12+
this.height,
13+
}) : assert((width != null || height != null) && !(width != null && height != null));
1714

1815
final Jumper jumper;
1916
final ImageProvider? customImage;
20-
final double? aspectRatio;
17+
final double? width;
18+
final double? height;
2119

2220
@override
2321
Widget build(BuildContext context) {
24-
Widget errorBuilder(BuildContext context, Object error, StackTrace? stackTrace) {
25-
return ItemImageNotFoundPlaceholder(
26-
width: UiItemEditorsConstants.jumperImagePlaceholderWidth,
27-
height: UiItemEditorsConstants.jumperImageHeight,
28-
helpDialog: ItemImageHelpDialog(
29-
content: translate(context).jumperImageHelpContent,
22+
final imageFit = width != null ? BoxFit.fitWidth : BoxFit.fitHeight;
23+
24+
late final Widget child;
25+
if (customImage != null) {
26+
child = Image(
27+
image: customImage!,
28+
width: width,
29+
height: height,
30+
fit: imageFit,
31+
);
32+
} else {
33+
child = DbItemImage<Jumper>(
34+
item: jumper,
35+
setup: context.read(),
36+
width: width,
37+
height: height,
38+
fit: imageFit,
39+
errorBuilder: (context, error, stackTrace) => SizedBox(
40+
width: width,
41+
height: height,
42+
child: Placeholder(
43+
color: Theme.of(context).colorScheme.onTertiary,
44+
),
3045
),
3146
);
3247
}
3348

34-
final image = customImage == null
35-
? DbItemImage<Jumper>(
36-
item: jumper,
37-
setup: context.read(),
38-
errorBuilder: errorBuilder,
39-
)
40-
: Image(
41-
image: customImage!,
42-
errorBuilder: errorBuilder,
43-
);
44-
return aspectRatio != null
45-
? AspectRatio(
46-
aspectRatio: aspectRatio!,
47-
child: image,
48-
)
49-
: image;
49+
return child;
5050
}
5151
}

0 commit comments

Comments
 (0)