diff --git a/ecommerce_app/lib/src/features/home_app_bar/shopping_cart_icon.dart b/ecommerce_app/lib/src/features/home_app_bar/shopping_cart_icon.dart index 7a3516d6..9ef82b69 100644 --- a/ecommerce_app/lib/src/features/home_app_bar/shopping_cart_icon.dart +++ b/ecommerce_app/lib/src/features/home_app_bar/shopping_cart_icon.dart @@ -1,7 +1,6 @@ -import 'package:ecommerce_app/src/features/shopping_cart/shopping_cart_screen.dart'; +import 'package:ecommerce_app/src/constants/app_sizes.dart'; import 'package:ecommerce_app/src/routing/app_router.dart'; import 'package:flutter/material.dart'; -import 'package:ecommerce_app/src/constants/app_sizes.dart'; import 'package:go_router/go_router.dart'; /// Shopping cart icon with items count badge diff --git a/ecommerce_app/lib/src/features/product_page/leave_review_action.dart b/ecommerce_app/lib/src/features/product_page/leave_review_action.dart index 2085bb33..24e3f6d2 100644 --- a/ecommerce_app/lib/src/features/product_page/leave_review_action.dart +++ b/ecommerce_app/lib/src/features/product_page/leave_review_action.dart @@ -1,11 +1,13 @@ import 'package:ecommerce_app/src/features/leave_review_page/leave_review_screen.dart'; import 'package:ecommerce_app/src/localization/string_hardcoded.dart'; import 'package:ecommerce_app/src/models/purchase.dart'; +import 'package:ecommerce_app/src/routing/app_router.dart'; import 'package:ecommerce_app/src/utils/date_formatter.dart'; import 'package:flutter/material.dart'; import 'package:ecommerce_app/src/common_widgets/custom_text_button.dart'; import 'package:ecommerce_app/src/common_widgets/responsive_two_column_layout.dart'; import 'package:ecommerce_app/src/constants/app_sizes.dart'; +import 'package:go_router/go_router.dart'; /// Simple widget to show the product purchase date along with a button to /// leave a review. @@ -40,11 +42,9 @@ class LeaveReviewAction extends StatelessWidget { .textTheme .bodyLarge! .copyWith(color: Colors.green[700]), - onPressed: () => Navigator.of(context).push( - MaterialPageRoute( - fullscreenDialog: true, - builder: (_) => LeaveReviewScreen(productId: productId), - ), + onPressed: () => context.goNamed( + AppRoute.reveiws.name, + pathParameters: {'id': productId}, ), ), ), diff --git a/ecommerce_app/lib/src/features/shopping_cart/shopping_cart_screen.dart b/ecommerce_app/lib/src/features/shopping_cart/shopping_cart_screen.dart index 74b2dc3d..57414c2d 100644 --- a/ecommerce_app/lib/src/features/shopping_cart/shopping_cart_screen.dart +++ b/ecommerce_app/lib/src/features/shopping_cart/shopping_cart_screen.dart @@ -1,10 +1,11 @@ -import 'package:ecommerce_app/src/features/checkout/checkout_screen.dart'; -import 'package:ecommerce_app/src/localization/string_hardcoded.dart'; -import 'package:ecommerce_app/src/models/item.dart'; -import 'package:flutter/material.dart'; import 'package:ecommerce_app/src/common_widgets/primary_button.dart'; import 'package:ecommerce_app/src/features/shopping_cart/shopping_cart_item.dart'; import 'package:ecommerce_app/src/features/shopping_cart/shopping_cart_items_builder.dart'; +import 'package:ecommerce_app/src/localization/string_hardcoded.dart'; +import 'package:ecommerce_app/src/models/item.dart'; +import 'package:ecommerce_app/src/routing/app_router.dart'; +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; /// Shopping cart screen showing the items in the cart (with editable /// quantities) and a button to checkout. @@ -40,12 +41,7 @@ class ShoppingCartScreen extends StatelessWidget { ), ctaBuilder: (_) => PrimaryButton( text: 'Checkout'.hardcoded, - onPressed: () => Navigator.of(context).push( - MaterialPageRoute( - fullscreenDialog: true, - builder: (_) => const CheckoutScreen(), - ), - ), + onPressed: () => context.pushNamed(AppRoute.checkout.name), ), ), ); diff --git a/ecommerce_app/lib/src/routing/app_router.dart b/ecommerce_app/lib/src/routing/app_router.dart index 6189076d..5bd82c87 100644 --- a/ecommerce_app/lib/src/routing/app_router.dart +++ b/ecommerce_app/lib/src/routing/app_router.dart @@ -1,4 +1,6 @@ import 'package:ecommerce_app/src/features/account/account_screen.dart'; +import 'package:ecommerce_app/src/features/checkout/checkout_screen.dart'; +import 'package:ecommerce_app/src/features/leave_review_page/leave_review_screen.dart'; import 'package:ecommerce_app/src/features/not_found/not_found_screen.dart'; import 'package:ecommerce_app/src/features/orders_list/orders_list_screen.dart'; import 'package:ecommerce_app/src/features/product_page/product_screen.dart'; @@ -11,6 +13,8 @@ import 'package:go_router/go_router.dart'; enum AppRoute { home, + reveiws, + checkout, product, cart, orders, @@ -28,13 +32,25 @@ final goRouter = GoRouter( builder: (context, state) => const ProductsListScreen(), routes: [ GoRoute( - path: 'product/:id', - name: AppRoute.product.name, - builder: (context, state) { - final productId = state.pathParameters['id']!; - return ProductScreen(productId: productId); - }, - ), + path: 'product/:id', + name: AppRoute.product.name, + builder: (context, state) { + final productId = state.pathParameters['id']!; + return ProductScreen(productId: productId); + }, + routes: [ + GoRoute( + path: 'reviews', + name: AppRoute.reveiws.name, + pageBuilder: (context, state) { + final productId = state.pathParameters['id']!; + return MaterialPage( + key: state.pageKey, + child: LeaveReviewScreen(productId: productId), + ); + }, + ), + ]), GoRoute( path: 'orders', pageBuilder: (context, state) => MaterialPage( @@ -48,7 +64,16 @@ final goRouter = GoRouter( pageBuilder: (context, state) => MaterialPage( key: state.pageKey, fullscreenDialog: true, - child: const ShoppingCartScreen())), + child: const ShoppingCartScreen()), + routes: [ + GoRoute( + path: 'checkout', + name: AppRoute.checkout.name, + pageBuilder: (context, state) => MaterialPage( + key: state.pageKey, + child: CheckoutScreen(), + )), + ]), GoRoute( path: 'orders', name: AppRoute.orders.name,