/// Placeholder shown when a list or search has nothing to display. library; import 'package:flutter/material.dart'; class EmptyState extends StatelessWidget { const EmptyState({ super.key, required this.icon, required this.title, required this.message, this.actionLabel, this.onAction, }); final IconData icon; final String title; final String message; final String? actionLabel; final VoidCallback? onAction; @override Widget build(BuildContext context) { final theme = Theme.of(context); final colors = theme.colorScheme; return Center( child: Padding( padding: const EdgeInsets.all(32), child: Column( mainAxisSize: MainAxisSize.min, children: [ Icon(icon, size: 48, color: colors.outline), const SizedBox(height: 16), Text(title, style: theme.textTheme.titleMedium), const SizedBox(height: 8), Text( message, textAlign: TextAlign.center, style: theme.textTheme.bodyMedium, ), if (actionLabel != null && onAction != null) ...[ const SizedBox(height: 20), FilledButton(onPressed: onAction, child: Text(actionLabel!)), ], ], ), ), ); } }