generateEmptyState static method
Implementation
static String generateEmptyState() {
return '''
import 'package:flutter/material.dart';
class EmptyState extends StatelessWidget {
final IconData icon;
final String title;
final String message;
final String? actionText;
final VoidCallback? onAction;
final Widget? illustration;
const EmptyState({
Key? key,
required this.icon,
required this.title,
required this.message,
this.actionText,
this.onAction,
this.illustration,
}) : super(key: key);
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
return Center(
child: Padding(
padding: const EdgeInsets.all(40),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (illustration != null)
illustration!
else
Container(
padding: const EdgeInsets.all(28),
decoration: BoxDecoration(
color: theme.colorScheme.primary.withOpacity(0.1),
shape: BoxShape.circle,
),
child: Icon(
icon,
size: 72,
color: theme.colorScheme.primary.withOpacity(0.7),
),
),
const SizedBox(height: 32),
Text(
title,
style: theme.textTheme.headlineSmall?.copyWith(
fontWeight: FontWeight.bold,
),
textAlign: TextAlign.center,
),
const SizedBox(height: 12),
Text(
message,
style: theme.textTheme.bodyLarge?.copyWith(
color: theme.colorScheme.onSurfaceVariant,
height: 1.5,
),
textAlign: TextAlign.center,
),
if (actionText != null && onAction != null) ...[
const SizedBox(height: 32),
FilledButton.icon(
onPressed: onAction,
icon: const Icon(Icons.add),
label: Text(actionText!),
style: FilledButton.styleFrom(
padding: const EdgeInsets.symmetric(
horizontal: 32,
vertical: 16,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
),
),
),
],
],
),
),
);
}
}
''';
}