Files
record-tool/lib/shared/widgets/app_status_view.dart
2026-06-04 10:50:24 +08:00

36 lines
995 B
Dart

import 'package:flutter/material.dart';
import 'package:recording_tool/shared/widgets/app_empty_view.dart';
import 'package:recording_tool/shared/widgets/app_error_view.dart';
import 'package:recording_tool/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,
};
}
}