Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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},
),
),
),
Expand Down
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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),
),
),
);
Expand Down
41 changes: 33 additions & 8 deletions ecommerce_app/lib/src/routing/app_router.dart
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -11,6 +13,8 @@ import 'package:go_router/go_router.dart';

enum AppRoute {
home,
reveiws,
checkout,
product,
cart,
orders,
Expand All @@ -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(
Expand All @@ -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,
Expand Down