1
1
import 'package:fluro/fluro.dart' ;
2
2
import 'package:flutter/material.dart' ;
3
3
import 'package:flutter_bloc/flutter_bloc.dart' ;
4
- import 'package:sj_manager/domain/use_cases/ui/simulation/simulation_screen_navigation_cubit.dart' ;
4
+ import 'package:sj_manager/features/database_editor/presentation/pages/database_editor_page.dart' ;
5
+ import 'package:sj_manager/features/game_variants/presentation/bloc/game_variant_cubit.dart' ;
6
+ import 'package:sj_manager/features/simulations/presentation/bloc/simulation_cubit.dart' ;
7
+ import 'package:sj_manager/to_embrace/domain/use_cases/ui/simulation/simulation_screen_navigation_cubit.dart' ;
5
8
import 'package:sj_manager/features/database_editor/domain/entities/jumper/jumper_db_record.dart' ;
6
- import 'package:sj_manager/data/models/game_variant/game_variant.dart' ;
7
- import 'package:sj_manager/data/models/game_variant/game_variants_io_utils.dart' ;
8
- import 'package:sj_manager/domain/entities/simulation/database/helper/simulation_database_helper.dart' ;
9
- import 'package:sj_manager/domain/entities/simulation/database/simulation_database_and_models/simulation_database.dart' ;
10
- import 'package:sj_manager/domain/entities/simulation/jumper/simulation_jumper.dart' ;
11
- import 'package:sj_manager/data/models/user_simulation/simulation_model.dart' ;
12
- import 'package:sj_manager/domain/entities/game_variant/hill/hill.dart' ;
13
- import 'package:sj_manager/domain/repository_interfaces/countries/country_flags/country_flags_repo.dart' ;
14
- import 'package:sj_manager/domain/repository_interfaces/countries/country_flags/local_storage_country_flags_repo.dart' ;
15
- import 'package:sj_manager/domain/repository_interfaces/generic/editable_items_repo.dart' ;
16
- import 'package:sj_manager/domain/repository_interfaces/generic/items_repo.dart' ;
17
- import 'package:sj_manager/presentation/ui/reusable_widgets/database_item_images/db_item_image_generating_setup.dart' ;
18
- import 'package:sj_manager/presentation/ui/screens/database_editor/database_editor_screen.dart' ;
19
- import 'package:sj_manager/presentation/ui/screens/simulation/simulation_route.dart' ;
20
- import 'package:sj_manager/presentation/ui/screens/main_screen/main_screen.dart' ;
21
- import 'package:sj_manager/presentation/ui/screens/settings/settings_screen.dart' ;
9
+ import 'package:sj_manager/core/general_utils/game_variants_io_utils.dart' ;
10
+ import 'package:sj_manager/features/simulations/domain/entities/simulation/database/simulation_database_helper.dart' ;
11
+ import 'package:sj_manager/features/simulations/domain/entities/simulation/database/jumper/simulation_jumper.dart' ;
12
+ import 'package:sj_manager/core/core_classes/hill/hill.dart' ;
13
+ import 'package:sj_manager/core/country_flags/country_flags_repository.dart' ;
14
+ import 'package:sj_manager/core/country_flags/local_storage_country_flags_repo.dart' ;
15
+ import 'package:sj_manager/general_ui/reusable_widgets/database_item_images/db_item_image_generating_setup.dart' ;
16
+ import 'package:sj_manager/to_embrace/ui/screens/simulation/simulation_route.dart' ;
17
+ import 'package:sj_manager/main_menu/ui/main_screen.dart' ;
18
+ import 'package:sj_manager/features/app_settings/presentation/pages/settings_screen.dart' ;
22
19
import 'package:provider/provider.dart' ;
23
- import 'package:sj_manager/presentation/ui/screens/ training_analyzer/training_analyzer_screen.dart' ;
24
- import 'package:sj_manager/utilities/utils /db_item_images.dart' ;
25
- import 'package:sj_manager/utilities/utils /file_system.dart' ;
20
+ import 'package:sj_manager/features/ training_analyzer/ui /training_analyzer_screen.dart' ;
21
+ import 'package:sj_manager/core/general_utils /db_item_images.dart' ;
22
+ import 'package:sj_manager/core/general_utils /file_system.dart' ;
26
23
import 'package:path/path.dart' as path;
27
24
28
25
void configureRoutes (FluroRouter router) {
@@ -105,10 +102,9 @@ void configureRoutes(FluroRouter router) {
105
102
'/databaseEditor/:gameVariantId' ,
106
103
(context, params) {
107
104
final gameVariantId = params['gameVariantId' ]! [0 ];
108
- final gameVariant = context!
109
- .read <ItemsRepo <GameVariant >>()
110
- .last
111
- .singleWhere ((variant) => variant.id == gameVariantId);
105
+ final gameVariantState =
106
+ context! .read <GameVariantCubit >().state as GameVariantChosen ;
107
+
112
108
final imagesDir = userDataDirectory (context.read (),
113
109
path.join ('game_variants' , gameVariantId, 'countries' , 'country_flags' ));
114
110
final countryFlagsRepo = LocalStorageCountryFlagsRepo (
@@ -117,8 +113,8 @@ void configureRoutes(FluroRouter router) {
117
113
);
118
114
return MultiProvider (
119
115
providers: [
120
- Provider .value (value: gameVariant ),
121
- Provider <CountryFlagsRepo >.value (value: countryFlagsRepo),
116
+ Provider .value (value: gameVariantState.variant ),
117
+ Provider <CountryFlagsRepository >.value (value: countryFlagsRepo),
122
118
Provider (
123
119
create: (context) => DbItemImageGeneratingSetup <JumperDbRecord >(
124
120
imagesDirectory: gameVariantDirectory (
@@ -130,29 +126,26 @@ void configureRoutes(FluroRouter router) {
130
126
),
131
127
),
132
128
],
133
- child: const DatabaseEditorScreen (),
129
+ child: const DatabaseEditorPage (),
134
130
);
135
131
},
136
132
transitionBuilder: defaultInFromLeft,
137
133
);
138
- define ('/simulation/:simulationId' , (context, params) {
139
- final simulationId = params['simulationId' ]! [0 ];
140
- final simulationsRepo = context! .read <EditableItemsRepo <SimulationModel >>();
141
- final simulation = simulationsRepo.last.singleWhere (
142
- (simulation) => simulation.id == simulationId,
143
- );
144
- final simulationIndexInRepo = simulationsRepo.last.indexOf (simulation);
145
- final imagesDir = userDataDirectory (context.read (),
146
- path.join ('simulations' , simulationId, 'countries' , 'country_flags' ));
147
- final simulationDatabase = simulation.database! .copyWith ();
134
+ define ('/simulation' , (context, params) {
135
+ final simulationState = context! .read <SimulationCubit >().state as SimulationChosen ;
136
+ final imagesDir = userDataDirectory (
137
+ context.read (),
138
+ path.join (
139
+ 'simulations' , simulationState.simulation.id, 'countries' , 'country_flags' ));
140
+ final simulationDatabase = simulationState.database.copyWith ();
148
141
149
- print ('routes, initial jumpers: ${simulation .database ! .jumpers }' );
142
+ print ('routes, initial jumpers: ${simulationState .database .jumpers }' );
150
143
151
144
return MultiProvider (
152
145
providers: [
153
- Provider .value (value: simulation),
154
- Provider (create: (context) => simulation .database! .countries),
155
- Provider <CountryFlagsRepo >(
146
+ Provider .value (value: simulationState. simulation),
147
+ Provider (create: (context) => simulationState .database.countries),
148
+ Provider <CountryFlagsRepository >(
156
149
create: (context) => LocalStorageCountryFlagsRepo (
157
150
imagesDirectory: imagesDir,
158
151
imagesExtension: 'png' ,
@@ -162,7 +155,7 @@ void configureRoutes(FluroRouter router) {
162
155
create: (context) => DbItemImageGeneratingSetup <SimulationJumper >(
163
156
imagesDirectory: simulationDirectory (
164
157
pathsCache: context.read (),
165
- simulationId: simulationId ,
158
+ simulationId: simulationState.simulation.id ,
166
159
directoryName: path.join ('jumper_images' ),
167
160
),
168
161
toFileName: simulationJumperImageName,
@@ -172,7 +165,7 @@ void configureRoutes(FluroRouter router) {
172
165
create: (context) => DbItemImageGeneratingSetup <Hill >(
173
166
imagesDirectory: simulationDirectory (
174
167
pathsCache: context.read (),
175
- simulationId: simulationId ,
168
+ simulationId: simulationState.simulation.id ,
176
169
directoryName: path.join ('hill_images' ),
177
170
),
178
171
toFileName: hillImageName,
@@ -194,12 +187,8 @@ void configureRoutes(FluroRouter router) {
194
187
],
195
188
child: Builder (builder: (context) {
196
189
return PopScope (
197
- onPopInvokedWithResult: (didPop, result) {
198
- final database = context.read <SimulationDatabase >();
199
- context.read <EditableItemsRepo <SimulationModel >>().replace (
200
- oldIndex: simulationIndexInRepo,
201
- newItem: simulation.copyWith (database: database),
202
- );
190
+ onPopInvokedWithResult: (didPop, result) async {
191
+ await context.read <SimulationCubit >().preserve ();
203
192
},
204
193
child: const SimulationRoute (),
205
194
);
0 commit comments