import 'package:flutter/material.dart'; import '../models/data_models.dart'; import '../pages/movies/movie_form_page.dart'; import '../pages/book/book_form_page.dart'; import '../pages/note/note_form_page.dart'; import '../pages/movies/movie_detail_page.dart'; import '../pages/book/book_detail_page.dart'; import '../pages/note/note_detail_page.dart'; import '../pages/movies/douban_webview_page.dart'; import 'slide_up_page_route.dart'; /// 路由生成器 class AppRouter { static Route generateRoute(RouteSettings settings) { switch (settings.name) { case '/movie-form': final args = settings.arguments; Movie? movie; String? initialStatus; if (args is Movie) { movie = args; } else if (args is Map) { initialStatus = args['initialStatus'] as String?; } return SlideUpPageRoute( page: MovieFormPage(movie: movie, initialStatus: initialStatus), ); case '/book-form': final args = settings.arguments; Book? book; String? initialStatus; if (args is Book) { book = args; } else if (args is Map) { initialStatus = args['initialStatus'] as String?; } return SlideUpPageRoute( page: BookFormPage(book: book, initialStatus: initialStatus), ); case '/note-form': final note = settings.arguments as Note?; return SlideUpPageRoute(page: NoteFormPage(note: note)); case '/movie-detail': final movie = settings.arguments as Movie; return SlideUpPageRoute(page: MovieDetailPage(movie: movie)); case '/book-detail': final book = settings.arguments as Book; return SlideUpPageRoute(page: BookDetailPage(book: book)); case '/note-detail': final note = settings.arguments as Note; return SlideUpPageRoute(page: NoteDetailPage(note: note)); case '/douban-webview': final url = settings.arguments as String; return SlideUpPageRoute(page: DoubanWebViewPage(url: url)); default: return MaterialPageRoute( builder: (_) => Scaffold( body: Center(child: Text('未找到页面:${settings.name}')), ), ); } } }