这是CaiYouHui前端,一个关于flutter的安卓app,前端使用flutter实现

route_guards.dart 998B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import 'package:flutter/material.dart';
  2. import 'package:provider/provider.dart';
  3. import '../screens/auth/login_screen.dart';
  4. import '../providers/auth_provider.dart';
  5. class ProtectedRoute extends StatelessWidget {
  6. final Widget child;
  7. final String? routeName;
  8. const ProtectedRoute({
  9. super.key,
  10. required this.child,
  11. this.routeName,
  12. });
  13. @override
  14. Widget build(BuildContext context) {
  15. final authProvider = Provider.of<AuthProvider>(context);
  16. if (authProvider.isAuthenticated) {
  17. return child;
  18. } else {
  19. return LoginScreen(
  20. onSuccess: () {
  21. // 如果有routeName,可以使用pushReplacementNamed
  22. if (routeName != null) {
  23. Navigator.of(context).pushReplacementNamed(routeName!);
  24. } else {
  25. // 否则使用原来的方式
  26. Navigator.of(context).pushReplacement(
  27. MaterialPageRoute(builder: (_) => child),
  28. );
  29. }
  30. },
  31. );
  32. }
  33. }
  34. }