This commit is contained in:
2026-06-03 14:07:10 +08:00
parent 3bdece45c3
commit 9eb8d1cc37
118 changed files with 5689 additions and 2 deletions

View File

@@ -0,0 +1,35 @@
import 'package:flutter/material.dart';
import 'package:flutter_template/shared/widgets/app_empty_view.dart';
import 'package:flutter_template/shared/widgets/app_error_view.dart';
import 'package:flutter_template/shared/widgets/app_loading_view.dart';
enum AppViewStatus { loading, empty, error, content }
class AppStatusView extends StatelessWidget {
const AppStatusView({
super.key,
required this.status,
required this.child,
this.empty,
this.error,
this.loading,
this.onRetry,
});
final AppViewStatus status;
final Widget child;
final Widget? empty;
final Widget? error;
final Widget? loading;
final VoidCallback? onRetry;
@override
Widget build(BuildContext context) {
return switch (status) {
AppViewStatus.loading => loading ?? const AppLoadingView(),
AppViewStatus.empty => empty ?? const AppEmptyView(),
AppViewStatus.error => error ?? AppErrorView(onRetry: onRetry),
AppViewStatus.content => child,
};
}
}