Initial commit
This commit is contained in:
121
lib/router.dart
Normal file
121
lib/router.dart
Normal file
@@ -0,0 +1,121 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'providers/auth_provider.dart';
|
||||
import 'pages/login_page.dart';
|
||||
import 'pages/home_page.dart';
|
||||
import 'pages/event_publish_page.dart';
|
||||
import 'pages/event_list_page.dart';
|
||||
import 'pages/order_work_page.dart';
|
||||
import 'pages/work_order_detail_page.dart';
|
||||
import 'pages/order_detail_page.dart';
|
||||
import 'pages/scan_result_page.dart';
|
||||
import 'pages/settings_page.dart';
|
||||
import 'pages/employee_page.dart';
|
||||
import 'pages/store_page.dart';
|
||||
import 'pages/report_page.dart';
|
||||
import 'pages/app_market_page.dart';
|
||||
import 'pages/help_page.dart';
|
||||
import 'pages/about_page.dart';
|
||||
import 'pages/policy_page.dart';
|
||||
|
||||
final routerProvider = Provider<GoRouter>((ref) {
|
||||
final authState = ref.watch(authProvider);
|
||||
|
||||
return GoRouter(
|
||||
initialLocation: '/login',
|
||||
redirect: (context, state) {
|
||||
final isLoggedIn = authState.isLoggedIn;
|
||||
final isLoginRoute = state.matchedLocation == '/login';
|
||||
|
||||
if (!isLoggedIn && !isLoginRoute) {
|
||||
return '/login';
|
||||
}
|
||||
if (isLoggedIn && isLoginRoute) {
|
||||
return '/home';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
routes: [
|
||||
GoRoute(
|
||||
path: '/login',
|
||||
builder: (context, state) => const LoginPage(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/home',
|
||||
builder: (context, state) => const HomePage(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/event/publish',
|
||||
builder: (context, state) => const EventPublishPage(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/event/list',
|
||||
builder: (context, state) => const EventListPage(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/order-work',
|
||||
builder: (context, state) {
|
||||
final tab = state.uri.queryParameters['tab'] ?? 'work';
|
||||
return OrderWorkPage(initialTab: tab);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: '/work-order/:id',
|
||||
builder: (context, state) {
|
||||
final id = state.pathParameters['id']!;
|
||||
return WorkOrderDetailPage(orderId: id);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: '/order/:id',
|
||||
builder: (context, state) {
|
||||
final id = state.pathParameters['id']!;
|
||||
return OrderDetailPage(orderId: id);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: '/scan-result',
|
||||
builder: (context, state) {
|
||||
final code = state.uri.queryParameters['code'] ?? '';
|
||||
return ScanResultPage(scanCode: code);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
path: '/settings',
|
||||
builder: (context, state) => const SettingsPage(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/settings/employees',
|
||||
builder: (context, state) => const EmployeePage(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/settings/store',
|
||||
builder: (context, state) => const StorePage(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/settings/report',
|
||||
builder: (context, state) => const ReportPage(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/settings/app-market',
|
||||
builder: (context, state) => const AppMarketPage(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/settings/help',
|
||||
builder: (context, state) => const HelpPage(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/settings/about',
|
||||
builder: (context, state) => const AboutPage(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/settings/policy',
|
||||
builder: (context, state) {
|
||||
final type = state.uri.queryParameters['type'] ?? 'agreement';
|
||||
return PolicyPage(type: type);
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user