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

protected_widget.dart 939B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import 'package:flutter/material.dart';
  2. import 'package:provider/provider.dart';
  3. import '../../providers/auth_provider.dart';
  4. import '../../screens/auth/login_screen.dart';
  5. import '../common/loading_indicator.dart';
  6. class ProtectedWidget extends StatelessWidget {
  7. final Widget child;
  8. final Widget? loadingWidget;
  9. const ProtectedWidget({
  10. super.key,
  11. required this.child,
  12. this.loadingWidget,
  13. });
  14. @override
  15. Widget build(BuildContext context) {
  16. final authProvider = Provider.of<AuthProvider>(context);
  17. // 如果正在加载,显示loading
  18. if (authProvider.isLoading) {
  19. return loadingWidget ?? const LoadingIndicator();
  20. }
  21. // 如果未认证,显示登录页
  22. if (!authProvider.isAuthenticated) {
  23. return LoginScreen(
  24. onSuccess: () {
  25. // 登录成功后的回调
  26. },
  27. );
  28. }
  29. // 已认证,显示子组件
  30. return child;
  31. }
  32. }