diff --git a/ecommerce_app/lib/src/features/products_list/products_grid.dart b/ecommerce_app/lib/src/features/products_list/products_grid.dart index d5fb706d..71aad96c 100644 --- a/ecommerce_app/lib/src/features/products_list/products_grid.dart +++ b/ecommerce_app/lib/src/features/products_list/products_grid.dart @@ -3,10 +3,12 @@ import 'dart:math'; import 'package:ecommerce_app/src/constants/test_products.dart'; import 'package:ecommerce_app/src/features/product_page/product_screen.dart'; import 'package:ecommerce_app/src/localization/string_hardcoded.dart'; +import 'package:ecommerce_app/src/routing/app_router.dart'; import 'package:flutter/material.dart'; import 'package:flutter_layout_grid/flutter_layout_grid.dart'; import 'package:ecommerce_app/src/constants/app_sizes.dart'; import 'package:ecommerce_app/src/features/products_list/product_card.dart'; +import 'package:go_router/go_router.dart'; /// A widget that displays the list of products that match the search query. class ProductsGrid extends StatelessWidget { @@ -29,11 +31,8 @@ class ProductsGrid extends StatelessWidget { final product = products[index]; return ProductCard( product: product, - onPressed: () => Navigator.of(context).push( - MaterialPageRoute( - builder: (_) => ProductScreen(productId: product.id), - ), - ), + onPressed: () => context.goNamed(AppRoute.product.name, + pathParameters: {'id': product.id}), ); }, ); diff --git a/ecommerce_app/lib/src/routing/app_router.dart b/ecommerce_app/lib/src/routing/app_router.dart index 4dbcee0a..1909443f 100644 --- a/ecommerce_app/lib/src/routing/app_router.dart +++ b/ecommerce_app/lib/src/routing/app_router.dart @@ -1,5 +1,6 @@ import 'package:ecommerce_app/src/features/account/account_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'; import 'package:ecommerce_app/src/features/products_list/products_list_screen.dart'; import 'package:ecommerce_app/src/features/shopping_cart/shopping_cart_screen.dart'; import 'package:ecommerce_app/src/features/sign_in/email_password_sign_in_screen.dart'; @@ -9,6 +10,7 @@ import 'package:go_router/go_router.dart'; enum AppRoute { home, + product, cart, orders, account, @@ -22,6 +24,14 @@ final goRouter = name: AppRoute.home.name, 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); + }, + ), GoRoute( path: 'orders', pageBuilder: (context, state) => MaterialPage(