fluter router

36 阅读1分钟
import 'package:flutter/cupertino.dart';
import '../pages/about.dart';
import '../pages/home.dart';
import '../pages/contact.dart';
import '../pages/cars.dart';
import '../pages/abouttext.dart';

// 1. 静态路由(不带参数)
final Map<String, WidgetBuilder> routes = {
  "/": (context) => const HomePage(),
  "/about": (context) => About(),
  "/cars": (context) => const Cart(),
  "/contact": (context) => contact(),
};

// 2. 动态路由(带参数)
final Map<String, Widget Function(BuildContext, dynamic)> routesWithArgs = {
  "/abouttext": (context, arguments) => AboutT(arguments: arguments),
};

// 3. 路由中间件
Route<dynamic>? onGenerateRoute(RouteSettings settings) {
  final String? name = settings.name;

  if (routesWithArgs.containsKey(name)) {
    return CupertinoPageRoute(
      settings: RouteSettings(name: name),
      builder: (context) => routesWithArgs[name]!(context, settings.arguments),
    );
  }

  if (routes.containsKey(name)) {
    return CupertinoPageRoute(
      settings: RouteSettings(name: name),
      builder: (context) => routes[name]!(context),
    );
  }

  return null; // 或者返回 404 页面
}