import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../screens/auth/login_screen.dart'; import '../providers/auth_provider.dart'; class ProtectedRoute extends StatelessWidget { final Widget child; final String? routeName; const ProtectedRoute({ super.key, required this.child, this.routeName, }); @override Widget build(BuildContext context) { final authProvider = Provider.of(context); if (authProvider.isAuthenticated) { return child; } else { return LoginScreen( onSuccess: () { // 如果有routeName,可以使用pushReplacementNamed if (routeName != null) { Navigator.of(context).pushReplacementNamed(routeName!); } else { // 否则使用原来的方式 Navigator.of(context).pushReplacement( MaterialPageRoute(builder: (_) => child), ); } }, ); } } }