Files
MookNote/lib/utils/app_router.dart
2026-03-07 00:40:01 +08:00

87 lines
2.5 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'package:flutter/material.dart';
import '../models/data_models.dart';
import '../pages/movie_form_page.dart';
import '../pages/book_form_page.dart';
import '../pages/note_form_page.dart';
import '../pages/movie_detail_page.dart';
import '../pages/book_detail_page.dart';
import '../pages/note_detail_page.dart';
/// 路由生成器
class AppRouter {
static Route<dynamic> generateRoute(RouteSettings settings) {
switch (settings.name) {
case '/movie-form':
// 处理不同参数类型Movie 对象或 Map包含 initialStatus
final args = settings.arguments;
Movie? movie;
String? initialStatus;
if (args is Movie) {
movie = args;
} else if (args is Map<String, dynamic>) {
initialStatus = args['initialStatus'] as String?;
}
return MaterialPageRoute(
builder: (_) => MovieFormPage(
movie: movie,
initialStatus: initialStatus,
),
);
case '/book-form':
// 处理不同参数类型Book 对象或 Map包含 initialStatus
final args = settings.arguments;
Book? book;
String? initialStatus;
if (args is Book) {
book = args;
} else if (args is Map<String, dynamic>) {
initialStatus = args['initialStatus'] as String?;
}
return MaterialPageRoute(
builder: (_) => BookFormPage(
book: book,
initialStatus: initialStatus,
),
);
case '/note-form':
final note = settings.arguments as Note?;
return MaterialPageRoute(
builder: (_) => NoteFormPage(note: note),
);
case '/movie-detail':
final movie = settings.arguments as Movie;
return MaterialPageRoute(
builder: (_) => MovieDetailPage(movie: movie),
);
case '/book-detail':
final book = settings.arguments as Book;
return MaterialPageRoute(
builder: (_) => BookDetailPage(book: book),
);
case '/note-detail':
final note = settings.arguments as Note;
return MaterialPageRoute(
builder: (_) => NoteDetailPage(note: note),
);
default:
return MaterialPageRoute(
builder: (_) => Scaffold(
body: Center(
child: Text('未找到页面:${settings.name}'),
),
),
);
}
}
}