52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:flutter/material.dart';
 | |
| 
 | |
| class EmptyState extends StatelessWidget {
 | |
|   final IconData icon;
 | |
|   final String title;
 | |
|   final String description;
 | |
|   final Widget? action;
 | |
| 
 | |
|   const EmptyState({
 | |
|     super.key,
 | |
|     required this.icon,
 | |
|     required this.title,
 | |
|     required this.description,
 | |
|     this.action,
 | |
|   });
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return Center(
 | |
|       child: Padding(
 | |
|         padding: const EdgeInsets.all(24.0),
 | |
|         child: Column(
 | |
|           mainAxisAlignment: MainAxisAlignment.center,
 | |
|           children: [
 | |
|             Icon(
 | |
|               icon,
 | |
|               size: 64,
 | |
|               color: Theme.of(context).colorScheme.outline,
 | |
|             ),
 | |
|             const SizedBox(height: 16),
 | |
|             Text(
 | |
|               title,
 | |
|               style: Theme.of(context).textTheme.titleLarge,
 | |
|               textAlign: TextAlign.center,
 | |
|             ),
 | |
|             const SizedBox(height: 8),
 | |
|             Text(
 | |
|               description,
 | |
|               style: Theme.of(context).textTheme.bodyMedium,
 | |
|               textAlign: TextAlign.center,
 | |
|             ),
 | |
|             if (action != null) ...[
 | |
|               const SizedBox(height: 24),
 | |
|               action!,
 | |
|             ],
 | |
|           ],
 | |
|         ),
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| }
 |