add firebase, add screen flow

This commit is contained in:
Phuoc Nguyen
2025-12-03 11:07:33 +07:00
parent 9fb4ba621b
commit cae04b3ae7
22 changed files with 504 additions and 131 deletions

View File

@@ -7,6 +7,7 @@ library;
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:worker/core/services/analytics_service.dart';
import 'package:worker/features/account/domain/entities/address.dart';
import 'package:worker/features/account/presentation/pages/address_form_page.dart';
@@ -64,7 +65,7 @@ final routerProvider = Provider<GoRouter>((ref) {
return GoRouter(
// Initial route - start with splash screen
initialLocation: RouteNames.splash,
observers: [AnalyticsService.observer],
// Redirect based on auth state
redirect: (context, state) {
final isLoading = authState.isLoading;
@@ -131,16 +132,22 @@ final routerProvider = Provider<GoRouter>((ref) {
GoRoute(
path: RouteNames.splash,
name: RouteNames.splash,
pageBuilder: (context, state) =>
MaterialPage(key: state.pageKey, child: const SplashPage()),
pageBuilder: (context, state) => MaterialPage(
key: state.pageKey,
name: RouteNames.splash,
child: const SplashPage(),
),
),
// Authentication Routes
GoRoute(
path: RouteNames.login,
name: RouteNames.login,
pageBuilder: (context, state) =>
MaterialPage(key: state.pageKey, child: const LoginPage()),
pageBuilder: (context, state) => MaterialPage(
key: state.pageKey,
name: RouteNames.login,
child: const LoginPage(),
),
),
GoRoute(
path: RouteNames.forgotPassword,
@@ -192,16 +199,22 @@ final routerProvider = Provider<GoRouter>((ref) {
GoRoute(
path: RouteNames.home,
name: RouteNames.home,
pageBuilder: (context, state) =>
MaterialPage(key: state.pageKey, child: const MainScaffold()),
pageBuilder: (context, state) => MaterialPage(
key: state.pageKey,
name: 'home',
child: const MainScaffold(),
),
),
// Products Route (full screen, no bottom nav)
GoRoute(
path: RouteNames.products,
name: RouteNames.products,
pageBuilder: (context, state) =>
MaterialPage(key: state.pageKey, child: const ProductsPage()),
pageBuilder: (context, state) => MaterialPage(
key: state.pageKey,
name: 'products',
child: const ProductsPage(),
),
),
// Product Detail Route
@@ -212,6 +225,7 @@ final routerProvider = Provider<GoRouter>((ref) {
final productId = state.pathParameters['id'];
return MaterialPage(
key: state.pageKey,
name: 'product_detail',
child: ProductDetailPage(productId: productId ?? ''),
);
},
@@ -224,6 +238,7 @@ final routerProvider = Provider<GoRouter>((ref) {
final productId = state.pathParameters['id'];
return MaterialPage(
key: state.pageKey,
name: 'write_review',
child: WriteReviewPage(productId: productId ?? ''),
);
},
@@ -239,6 +254,7 @@ final routerProvider = Provider<GoRouter>((ref) {
final promotionId = state.pathParameters['id'];
return MaterialPage(
key: state.pageKey,
name: 'promotion_detail',
child: PromotionDetailPage(promotionId: promotionId),
);
},
@@ -248,8 +264,11 @@ final routerProvider = Provider<GoRouter>((ref) {
GoRoute(
path: RouteNames.cart,
name: RouteNames.cart,
pageBuilder: (context, state) =>
MaterialPage(key: state.pageKey, child: const CartPage()),
pageBuilder: (context, state) => MaterialPage(
key: state.pageKey,
name: 'cart',
child: const CartPage(),
),
),
// Checkout Route