| 1234567891011121314151617181920212223242526272829303132333435363738 |
- 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<AuthProvider>(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),
- );
- }
- },
- );
- }
- }
- }
|