36 lines
995 B
Dart
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,
|
|
};
|
|
}
|
|
}
|