| 1234567891011121314151617181920212223242526272829303132333435363738 |
- import 'package:flutter/material.dart';
- import 'package:provider/provider.dart';
- import '../../providers/auth_provider.dart';
- import '../../screens/auth/login_screen.dart';
- import '../common/loading_indicator.dart';
-
- class ProtectedWidget extends StatelessWidget {
- final Widget child;
- final Widget? loadingWidget;
-
- const ProtectedWidget({
- super.key,
- required this.child,
- this.loadingWidget,
- });
-
- @override
- Widget build(BuildContext context) {
- final authProvider = Provider.of<AuthProvider>(context);
-
- // 如果正在加载,显示loading
- if (authProvider.isLoading) {
- return loadingWidget ?? const LoadingIndicator();
- }
-
- // 如果未认证,显示登录页
- if (!authProvider.isAuthenticated) {
- return LoginScreen(
- onSuccess: () {
- // 登录成功后的回调
- },
- );
- }
-
- // 已认证,显示子组件
- return child;
- }
- }
|