import 'package:flutter/material.dart'; import 'package:gap/gap.dart'; class EmptyStateWidget extends StatelessWidget { const EmptyStateWidget({ required this.message, this.icon, this.actionLabel, this.onAction, super.key, }); final String message; final IconData? icon; final String? actionLabel; final VoidCallback? onAction; @override Widget build(BuildContext context) { final theme = Theme.of(context); return Center( child: Padding( padding: const EdgeInsets.all(24), child: Column( mainAxisSize: MainAxisSize.min, children: [ Icon( icon ?? Icons.inbox_outlined, size: 64, color: theme.colorScheme.onSurfaceVariant.withValues(alpha: 0.5), ), const Gap(16), Text( message, style: theme.textTheme.bodyLarge?.copyWith( color: theme.colorScheme.onSurfaceVariant, ), textAlign: TextAlign.center, ), if (actionLabel != null && onAction != null) ...[ const Gap(16), FilledButton.tonal( onPressed: onAction, child: Text(actionLabel!), ), ], ], ), ), ); } }