This commit is contained in:
2025-10-28 00:09:46 +07:00
parent 9ebe7c2919
commit de49f564b1
110 changed files with 15392 additions and 3996 deletions

View File

@@ -0,0 +1,156 @@
# GoRouter Quick Reference
## Import
```dart
import 'package:minhthu/core/router/app_router.dart';
```
## Navigation Commands
### Basic Navigation
```dart
// Login page
context.goToLogin();
// Warehouses list
context.goToWarehouses();
// Operations (requires warehouse)
context.goToOperations(warehouse);
// Products (requires warehouse and operation type)
context.goToProducts(
warehouse: warehouse,
operationType: 'import', // or 'export'
);
// Go back
context.goBack();
```
### Named Routes (Alternative)
```dart
context.goToLoginNamed();
context.goToWarehousesNamed();
context.goToOperationsNamed(warehouse);
context.goToProductsNamed(
warehouse: warehouse,
operationType: 'export',
);
```
## Common Usage Patterns
### Warehouse Selection → Operations
```dart
onTap: () {
context.goToOperations(warehouse);
}
```
### Operation Selection → Products
```dart
// Import
onTap: () {
context.goToProducts(
warehouse: warehouse,
operationType: 'import',
);
}
// Export
onTap: () {
context.goToProducts(
warehouse: warehouse,
operationType: 'export',
);
}
```
### Logout
```dart
IconButton(
icon: const Icon(Icons.logout),
onPressed: () async {
await ref.read(authProvider.notifier).logout();
// Router auto-redirects to /login
},
)
```
## Route Paths
| Path | Name | Description |
|------|------|-------------|
| `/login` | `login` | Login page |
| `/warehouses` | `warehouses` | Warehouse list (protected) |
| `/operations` | `operations` | Operation selection (protected) |
| `/products` | `products` | Product list (protected) |
## Authentication
### Check Status
```dart
final isAuth = await SecureStorage().isAuthenticated();
```
### Auto-Redirect Rules
- Not authenticated → `/login`
- Authenticated on `/login``/warehouses`
- Missing parameters → Previous valid page
## Error Handling
### Missing Parameters
```dart
// Automatically redirected to safe page
// Error screen shown briefly
```
### Page Not Found
```dart
// Custom 404 page shown
// Can navigate back to login
```
## Complete Example
```dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:minhthu/core/router/app_router.dart';
class WarehouseCard extends ConsumerWidget {
final WarehouseEntity warehouse;
const WarehouseCard({required this.warehouse});
@override
Widget build(BuildContext context, WidgetRef ref) {
return Card(
child: ListTile(
title: Text(warehouse.name),
subtitle: Text(warehouse.code),
trailing: Icon(Icons.arrow_forward),
onTap: () {
// Navigate to operations
context.goToOperations(warehouse);
},
),
);
}
}
```
## Tips
1. **Use extension methods** - They provide type safety and auto-completion
2. **Let router handle auth** - Don't manually check authentication in pages
3. **Validate early** - Router validates parameters automatically
4. **Use named routes** - For better route management in large apps
## See Also
- Full documentation: `/lib/core/router/README.md`
- Setup guide: `/ROUTER_SETUP.md`
- Examples: `/lib/features/warehouse/presentation/pages/warehouse_selection_page_example.dart`