analytics-empty-state.

This commit is contained in:
Faris Armoush
2025-06-30 12:52:22 +03:00
parent db05331e9a
commit 9ebf474a60
6 changed files with 116 additions and 54 deletions

View File

@ -27,53 +27,37 @@ class AnalyticsChartEmptyStateWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Expanded(
child: () {
if (isLoading) {
return const AppLoadingIndicator();
} else if (isError) {
return _buildState(
context,
message: errorMessage ?? 'Something went wrong',
color: ColorsManager.red,
);
} else if (isInitial) {
return _buildState(context, message: initialMessage);
} else {
return _buildState(context, message: noDataMessage);
}
}(),
child: _buildWidgetBasedOnState(context),
);
}
Widget _buildState(
BuildContext context, {
required String message,
Color? color,
}) {
final disabledColor = context.theme.disabledColor;
Widget _buildWidgetBasedOnState(BuildContext context) {
final widgetsMap = {
isLoading: const AppLoadingIndicator(),
isInitial: _buildState(context, initialMessage),
isError: _buildState(context, errorMessage ?? 'Something went wrong'),
};
return widgetsMap[true] ?? _buildState(context, noDataMessage);
}
Widget _buildState(BuildContext context, String message) {
return Center(
child: Column(
spacing: 16,
mainAxisAlignment: MainAxisAlignment.center,
children: [
const SizedBox(height: 16),
Expanded(
child: SvgPicture.asset(
iconPath,
fit: BoxFit.contain,
colorFilter: ColorFilter.mode(
color ?? disabledColor,
BlendMode.srcIn,
),
),
),
Expanded(child: SvgPicture.asset(iconPath, fit: BoxFit.contain)),
SelectableText(
message,
style: context.textTheme.bodyMedium?.copyWith(
color: color ?? disabledColor,
fontSize: 16,
fontWeight: FontWeight.w700,
),
style: isError
? context.textTheme.bodyMedium?.copyWith(
color: ColorsManager.red,
fontSize: 16,
fontWeight: FontWeight.w700,
)
: null,
textAlign: TextAlign.center,
),
const SizedBox(height: 16),