6177214e-ce7c-49e3-99de-ff9721b26f63 — Commit 4b2e8632
Changed files
.../pregistration/cubit/preregistration_cubit.dart | 17 ++++--- .../pages/prereg_up_sales_catalog_page.dart | 38 ++++----------- .../components/catalog/other_upgrade_catalog.dart | 48 ++++++++++++------ .../components/catalog/room_uprade_catalog.dart | 57 ++++++++++++++++------ .../up_sales/components/comwell_radio_button.dart | 6 +-- .../components/up_sales_upgrades_widget.dart | 32 +++++------- .../lib/up_sales/cubit/up_sales_cubit.dart | 7 +-- .../lib/up_sales/pages/other_upgrade_page.dart | 5 +- comwell_key_app/lib/up_sales/up_sales_catalog.dart | 37 ++++---------- 9 files changed, 120 insertions(+), 127 deletions(-)
Diff
diff --git a/comwell_key_app/lib/pregistration/cubit/preregistration_cubit.dart b/comwell_key_app/lib/pregistration/cubit/preregistration_cubit.dart
index a4961330..6848ca94 100644
--- a/comwell_key_app/lib/pregistration/cubit/preregistration_cubit.dart
+++ b/comwell_key_app/lib/pregistration/cubit/preregistration_cubit.dart
@@ -356,13 +356,9 @@ class PreregistrationCubit extends Cubit<PreregistrationState> {
.where((upgrade) => upgrade.type != UpgradeType.room)
.toList();
emit(state.copyWith(selectedUpSales: [...filteredUpSales, roomUpgrade]));
- } else if (roomUpgrade.type == UpgradeType.service) {
- final filteredUpSalesService = state.selectedUpSales
- .where((upgrade) => upgrade.type != UpgradeType.service)
- .toList();
- emit(state.copyWith(selectedUpSales: [...filteredUpSalesService, roomUpgrade]));
} else {
- emit(state.copyWith(selectedUpSales: [...state.selectedUpSales, roomUpgrade]));
+ emit(state
+ .copyWith(selectedUpSales: [...state.selectedUpSales, roomUpgrade]));
}
}
@@ -389,8 +385,13 @@ class PreregistrationCubit extends Cubit<PreregistrationState> {
emit(state.copyWith(selectedUpSales: filteredUpSales));
return;
} else {
- final existingItems = state.selectedUpSales.where((upgrade) => upgrade.id != roomUpgrade.id).toList();
- final newSelectedUpSales = [...existingItems, ...List.generate(quantity, (_) => roomUpgrade)];
+ final existingItems = state.selectedUpSales
+ .where((upgrade) => upgrade.id != roomUpgrade.id)
+ .toList();
+ final newSelectedUpSales = [
+ ...existingItems,
+ ...List.generate(quantity, (_) => roomUpgrade)
+ ];
emit(state.copyWith(selectedUpSales: newSelectedUpSales));
}
}
diff --git a/comwell_key_app/lib/pregistration/pages/prereg_up_sales_catalog_page.dart b/comwell_key_app/lib/pregistration/pages/prereg_up_sales_catalog_page.dart
index d050c47c..f51994e5 100644
--- a/comwell_key_app/lib/pregistration/pages/prereg_up_sales_catalog_page.dart
+++ b/comwell_key_app/lib/pregistration/pages/prereg_up_sales_catalog_page.dart
@@ -79,6 +79,13 @@ class PreregUpSalesCatalogPage extends StatelessWidget {
RoomUpgradeCatalog(
upSales: state.upSales,
selectedUpSales: state.selectedUpSales,
+ onRoomUpgradeSelected: (roomUpgrade, isSelected) {
+ if (isSelected) {
+ cubit.removeUpgrade(roomUpgrade);
+ } else {
+ cubit.addSelected(roomUpgrade);
+ }
+ },
onTap: (roomUpgrade) {
final isSelected =
state.selectedUpSales.contains(roomUpgrade);
@@ -87,18 +94,7 @@ class PreregUpSalesCatalogPage extends StatelessWidget {
} else {
cubit.addSelected(roomUpgrade);
}
-
},
- onReadMoreTap:
- (context, roomUpgrade, quantity, selectedUpSales) =>
- handleReadMoreTapPrereg(
- context: context,
- routeName: AppRoutes.roomUpgrade.name,
- cubit: cubit,
- roomUpgrade: roomUpgrade,
- quantity: quantity,
- selectedUpSales: selectedUpSales,
- ),
),
const SizedBox(height: 24),
Padding(
@@ -110,25 +106,9 @@ class PreregUpSalesCatalogPage extends StatelessWidget {
OtherUpgradeCatalog(
upSales: state.upSales,
selectedUpSales: state.selectedUpSales,
- onTap: (roomUpgrade) {
- final isSelected =
- state.selectedUpSales.contains(roomUpgrade);
- if (isSelected) {
- cubit.removeUpgrade(roomUpgrade);
- } else {
- cubit.addSelected(roomUpgrade);
- }
+ onOtherUpgradeSelected: (roomUpgrade, quantity) {
+ cubit.updateUpgradeQuantity(roomUpgrade, quantity);
},
- onReadMoreTap:
- (context, roomUpgrade, quantity, selectedUpSales) =>
- handleReadMoreTapPrereg(
- context: context,
- routeName: AppRoutes.otherUpgrade.name,
- cubit: cubit,
- roomUpgrade: roomUpgrade,
- quantity: cubit.extrasTotalQuantity(roomUpgrade),
- selectedUpSales: selectedUpSales,
- ),
),
const SizedBox(height: 24),
],
diff --git a/comwell_key_app/lib/up_sales/components/catalog/other_upgrade_catalog.dart b/comwell_key_app/lib/up_sales/components/catalog/other_upgrade_catalog.dart
index 386b2e15..d8dc52c9 100644
--- a/comwell_key_app/lib/up_sales/components/catalog/other_upgrade_catalog.dart
+++ b/comwell_key_app/lib/up_sales/components/catalog/other_upgrade_catalog.dart
@@ -2,15 +2,21 @@ import 'package:comwell_key_app/routing/app_routes.dart';
import 'package:comwell_key_app/themes/light_theme.dart';
import 'package:comwell_key_app/up_sales/components/up_sales_upgrades_widget.dart';
import 'package:comwell_key_app/up_sales/models/room_upgrade.dart';
+import 'package:comwell_key_app/up_sales/models/room_upgrade_extra.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
+import 'package:go_router/go_router.dart';
class OtherUpgradeCatalog extends StatelessWidget {
final List<RoomUpgrade> upSales;
final List<RoomUpgrade> selectedUpSales;
- final Function(RoomUpgrade) onTap;
- final Future<void> Function(BuildContext context, RoomUpgrade roomUpgrade, int quantity, List<RoomUpgrade> selectedUpSales) onReadMoreTap;
- const OtherUpgradeCatalog({super.key, required this.upSales, required this.selectedUpSales, required this.onTap, required this.onReadMoreTap});
+ final Function(RoomUpgrade, int)? onOtherUpgradeSelected;
+ const OtherUpgradeCatalog({
+ super.key,
+ required this.upSales,
+ required this.selectedUpSales,
+ this.onOtherUpgradeSelected
+ });
@override
Widget build(BuildContext context) {
@@ -33,17 +39,31 @@ class OtherUpgradeCatalog extends StatelessWidget {
scrollDirection: Axis.horizontal,
itemCount: otherUpSales.length,
itemBuilder: (context, index) {
- return UpSalesUpgradesWidget(
- width: 328,
- height: 268,
- roomUpgrade: otherUpSales.elementAt(index),
- isSelected: selectedUpSales.contains(otherUpSales.elementAt(index)),
- routeName: AppRoutes.otherUpgrade.name,
- showCounter: true,
- selectedUpSales: selectedUpSales,
- onTap: onTap,
- onReadMoreTap: (context, roomUpgrade, quantity, selectedUpSales) =>
- onReadMoreTap(context, roomUpgrade, quantity, selectedUpSales),
+ return GestureDetector(
+ onTap: () async {
+ final result = await context.pushNamed(
+ AppRoutes.otherUpgrade.name,
+ extra: RoomUpgradeExtra(
+ roomUpgrade: otherUpSales.elementAt(index),
+ quantity: selectedUpSales.where((e) => e.id == otherUpSales.elementAt(index).id).length,
+ )
+ );
+
+ if (result is int) {
+ final roomUpgrade = otherUpSales.elementAt(index);
+ onOtherUpgradeSelected?.call(roomUpgrade, result);
+ }
+ },
+ child: UpSalesUpgradesWidget(
+ width: 328,
+ height: 268,
+ roomUpgrade: otherUpSales.elementAt(index),
+ isSelected: selectedUpSales.contains(otherUpSales.elementAt(index)),
+ routeName: AppRoutes.otherUpgrade.name,
+ showCounter: true,
+ selectedUpSales: selectedUpSales,
+ onTap: (roomUpgrade) {},
+ ),
);
},
),
diff --git a/comwell_key_app/lib/up_sales/components/catalog/room_uprade_catalog.dart b/comwell_key_app/lib/up_sales/components/catalog/room_uprade_catalog.dart
index 5b47a369..80b05e0f 100644
--- a/comwell_key_app/lib/up_sales/components/catalog/room_uprade_catalog.dart
+++ b/comwell_key_app/lib/up_sales/components/catalog/room_uprade_catalog.dart
@@ -3,19 +3,27 @@ import 'package:comwell_key_app/routing/app_routes.dart';
import 'package:comwell_key_app/themes/light_theme.dart';
import 'package:comwell_key_app/up_sales/components/up_sales_upgrades_widget.dart';
import 'package:comwell_key_app/up_sales/models/room_upgrade.dart';
+import 'package:comwell_key_app/up_sales/models/room_upgrade_list.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
+import 'package:go_router/go_router.dart';
class RoomUpgradeCatalog extends StatelessWidget {
final List<RoomUpgrade> upSales;
final List<RoomUpgrade> selectedUpSales;
- final Function(RoomUpgrade) onTap;
- final Future<void> Function(BuildContext context, RoomUpgrade roomUpgrade, int quantity, List<RoomUpgrade> selectedUpSales) onReadMoreTap;
- const RoomUpgradeCatalog({super.key, required this.upSales, required this.selectedUpSales, required this.onTap, required this.onReadMoreTap});
+ final Function(RoomUpgrade, bool)? onRoomUpgradeSelected;
+ final Function(RoomUpgrade)? onTap;
+ const RoomUpgradeCatalog({
+ super.key,
+ required this.upSales,
+ required this.selectedUpSales,
+ this.onRoomUpgradeSelected,
+ this.onTap
+ });
@override
Widget build(BuildContext context) {
- final theme = Theme.of(context);
+ final theme = Theme.of(context);
final roomUpSales = upSales
.where((roomUpgrade) => roomUpgrade.type == UpgradeType.room)
.toList();
@@ -34,21 +42,38 @@ class RoomUpgradeCatalog extends StatelessWidget {
scrollDirection: Axis.horizontal,
itemCount: roomUpSales.length,
itemBuilder: (context, index) {
- return UpSalesUpgradesWidget(
- width: kUpSalesServiceWidgetWidthLarge,
- height: kUpSalesServiceWidgetHeightLarge,
- roomUpgrade: roomUpSales.elementAt(index),
- isSelected: selectedUpSales.contains(roomUpSales.elementAt(index)),
- routeName: AppRoutes.roomUpgrade.name,
- showCounter: false,
- selectedUpSales: selectedUpSales,
- onTap: onTap,
- onReadMoreTap: (context, roomUpgrade, quantity, selectedUpSales) =>
- onReadMoreTap(context, roomUpgrade, quantity, selectedUpSales),
+ return GestureDetector(
+ onTap: () async {
+ final result = await context.pushNamed(
+ AppRoutes.roomUpgrade.name,
+ extra: RoomUpgradeList(
+ roomUpgrade: roomUpSales.elementAt(index),
+ roomUpgrades: selectedUpSales,
+ )
+ );
+
+ if (result is List && result.length == 2) {
+ final roomUpgrade = result[0] as RoomUpgrade;
+ final isSelected = result[1] as bool;
+
+ onRoomUpgradeSelected?.call(roomUpgrade, isSelected);
+ }
+ },
+ child: UpSalesUpgradesWidget(
+ width: kUpSalesServiceWidgetWidthLarge,
+ height: kUpSalesServiceWidgetHeightLarge,
+ roomUpgrade: roomUpSales.elementAt(index),
+ isSelected: selectedUpSales.contains(roomUpSales.elementAt(index)),
+ routeName: AppRoutes.roomUpgrade.name,
+ showCounter: false,
+ selectedUpSales: selectedUpSales,
+ onTap: (roomUpgrade) {
+ onTap?.call(roomUpgrade);
+ },
+ ),
);
},
),
);
-
}
}
\ No newline at end of file
diff --git a/comwell_key_app/lib/up_sales/components/comwell_radio_button.dart b/comwell_key_app/lib/up_sales/components/comwell_radio_button.dart
index 0b9f440b..99cda7ea 100644
--- a/comwell_key_app/lib/up_sales/components/comwell_radio_button.dart
+++ b/comwell_key_app/lib/up_sales/components/comwell_radio_button.dart
@@ -11,7 +11,7 @@ class ComwellRadioButton extends StatelessWidget {
return InkWell(
onTap: onTap,
child: AnimatedContainer(
- duration: const Duration(milliseconds: 200),
+ duration: const Duration(milliseconds: 50),
curve: Curves.easeInOut,
width: 24,
height: 24,
@@ -24,9 +24,7 @@ class ComwellRadioButton extends StatelessWidget {
),
child: selected
? Center(
- child: AnimatedContainer(
- duration: const Duration(milliseconds: 200),
- curve: Curves.easeInOut,
+ child: Container(
width: 16,
height: 16,
decoration: const BoxDecoration(
diff --git a/comwell_key_app/lib/up_sales/components/up_sales_upgrades_widget.dart b/comwell_key_app/lib/up_sales/components/up_sales_upgrades_widget.dart
index 16eb58f5..31128857 100644
--- a/comwell_key_app/lib/up_sales/components/up_sales_upgrades_widget.dart
+++ b/comwell_key_app/lib/up_sales/components/up_sales_upgrades_widget.dart
@@ -14,8 +14,6 @@ class UpSalesUpgradesWidget extends StatelessWidget {
final String routeName;
final bool showCounter;
final Function(RoomUpgrade) onTap;
- final Future<void> Function(BuildContext context, RoomUpgrade roomUpgrade,
- int quantity, List<RoomUpgrade> selectedUpSales) onReadMoreTap;
final List<RoomUpgrade> selectedUpSales;
const UpSalesUpgradesWidget(
{super.key,
@@ -27,7 +25,7 @@ class UpSalesUpgradesWidget extends StatelessWidget {
this.showCounter = false,
required this.onTap,
required this.selectedUpSales,
- required this.onReadMoreTap});
+ });
@override
Widget build(BuildContext context) {
@@ -119,28 +117,22 @@ class UpSalesUpgradesWidget extends StatelessWidget {
showCounter
? UpgradesCounter(quantity: quantity)
: ComwellRadioButton(
- selected: isSelected,
- onTap: () {
- onTap(roomUpgrade);
- },
- ),
+ selected: selectedUpSales.contains(roomUpgrade),
+ onTap: () {
+ onTap.call(roomUpgrade);
+ },
+ ),
],
),
],
),
const SizedBox(height: 8),
- GestureDetector(
- onTap: () {
- onReadMoreTap(
- context, roomUpgrade, quantity, selectedUpSales);
- },
- child: Text(
- 'read_more_up_sales'.tr(),
- style: theme.textTheme.bodySmall?.copyWith(
- color: sandColor[80],
- decoration: TextDecoration.underline,
- decorationColor: sandColor[80],
- ),
+ Text(
+ 'read_more_up_sales'.tr(),
+ style: theme.textTheme.bodySmall?.copyWith(
+ color: sandColor[80],
+ decoration: TextDecoration.underline,
+ decorationColor: sandColor[80],
),
),
],
diff --git a/comwell_key_app/lib/up_sales/cubit/up_sales_cubit.dart b/comwell_key_app/lib/up_sales/cubit/up_sales_cubit.dart
index d83d4353..13268fdc 100644
--- a/comwell_key_app/lib/up_sales/cubit/up_sales_cubit.dart
+++ b/comwell_key_app/lib/up_sales/cubit/up_sales_cubit.dart
@@ -44,12 +44,7 @@ class UpSalesCubit extends Cubit<UpSalesState> {
.toList();
emit(state.updateSelectedUpSales(
roomUpgradeList: [...filteredUpSales, roomUpgrade]));
- } else if (roomUpgrade.type == UpgradeType.service) {
- final filteredUpSalesService = state.selectedUpSales
- .where((upgrade) => upgrade.type != UpgradeType.service)
- .toList();
- emit(state.updateSelectedUpSales(
- roomUpgradeList: [...filteredUpSalesService, roomUpgrade]));
+
} else {
emit(state.addSelectedUpsales(roomUpgrade: roomUpgrade));
}
diff --git a/comwell_key_app/lib/up_sales/pages/other_upgrade_page.dart b/comwell_key_app/lib/up_sales/pages/other_upgrade_page.dart
index 189699e7..cd738a2c 100644
--- a/comwell_key_app/lib/up_sales/pages/other_upgrade_page.dart
+++ b/comwell_key_app/lib/up_sales/pages/other_upgrade_page.dart
@@ -101,9 +101,10 @@ class OtherUpgradePage extends StatelessWidget {
flex: 2,
child: UpSalesBottomButton(
onAddUpSale: () {
- Navigator.pop(context, [extra.roomUpgrade, true]);
+ cubit.increment();
+ Navigator.pop(context, cubit.state.quantity);
},
- onContinue: () {
+ onContinue: () {
Navigator.pop(context, cubit.state.quantity);
},
selectedUpSales: cubit.state.selectedUpSales,
diff --git a/comwell_key_app/lib/up_sales/up_sales_catalog.dart b/comwell_key_app/lib/up_sales/up_sales_catalog.dart
index 7c8c6396..193c637e 100644
--- a/comwell_key_app/lib/up_sales/up_sales_catalog.dart
+++ b/comwell_key_app/lib/up_sales/up_sales_catalog.dart
@@ -90,6 +90,13 @@ class UpSalesCatalog extends StatelessWidget {
RoomUpgradeCatalog(
upSales: cubit.upSales,
selectedUpSales: cubit.state.selectedUpSales,
+ onRoomUpgradeSelected: (roomUpgrade, isSelected) {
+ if (isSelected) {
+ cubit.removeUpgrade(roomUpgrade);
+ } else {
+ cubit.addSelected(roomUpgrade);
+ }
+ },
onTap: (roomUpgrade) {
final isSelected =
cubit.state.selectedUpSales.contains(roomUpgrade);
@@ -99,16 +106,6 @@ class UpSalesCatalog extends StatelessWidget {
cubit.addSelected(roomUpgrade);
}
},
- onReadMoreTap:
- (context, roomUpgrade, quantity, selectedUpSales) =>
- handleReadMoreTapUpSales(
- context: context,
- routeName: AppRoutes.roomUpgrade.name,
- cubit: cubit,
- roomUpgrade: roomUpgrade,
- quantity: quantity,
- selectedUpSales: selectedUpSales,
- ),
),
const SizedBox(height: 24),
Padding(
@@ -120,25 +117,9 @@ class UpSalesCatalog extends StatelessWidget {
OtherUpgradeCatalog(
upSales: cubit.upSales,
selectedUpSales: cubit.state.selectedUpSales,
- onTap: (roomUpgrade) {
- final isSelected =
- cubit.state.selectedUpSales.contains(roomUpgrade);
- if (isSelected) {
- cubit.removeUpgrade(roomUpgrade);
- } else {
- cubit.addSelected(roomUpgrade);
- }
+ onOtherUpgradeSelected: (roomUpgrade, quantity) {
+ cubit.updateUpgradeQuantity(roomUpgrade, quantity);
},
- onReadMoreTap:
- (context, roomUpgrade, quantity, selectedUpSales) =>
- handleReadMoreTapUpSales(
- context: context,
- routeName: AppRoutes.otherUpgrade.name,
- cubit: cubit,
- roomUpgrade: roomUpgrade,
- quantity: quantity,
- selectedUpSales: selectedUpSales,
- ),
),
const SizedBox(height: 24),
],