import 'package:flutter/material.dart'; import 'package:mobile_monitoring/core/constants/colors.dart'; /// Empty State - Widget untuk menampilkan empty state class EmptyState extends StatelessWidget { final String title; final String? message; final IconData? icon; final Widget? illustration; final String? actionText; final VoidCallback? onAction; const EmptyState({ super.key, required this.title, this.message, this.icon, this.illustration, this.actionText, this.onAction, }); @override Widget build(BuildContext context) { return Center( child: Padding( padding: const EdgeInsets.all(32), child: Column( mainAxisSize: MainAxisSize.min, children: [ if (illustration != null) illustration! else if (icon != null) Icon( icon, size: 80, color: AppColors.mediumGray, ), const SizedBox(height: 24), Text( title, style: const TextStyle( fontSize: 18, fontWeight: FontWeight.w600, color: AppColors.textPrimary, ), textAlign: TextAlign.center, ), if (message != null) ...[ const SizedBox(height: 8), Text( message!, style: const TextStyle( fontSize: 14, color: AppColors.textSecondary, ), textAlign: TextAlign.center, ), ], if (actionText != null && onAction != null) ...[ const SizedBox(height: 24), ElevatedButton( onPressed: onAction, style: ElevatedButton.styleFrom( backgroundColor: AppColors.primary, foregroundColor: AppColors.white, padding: const EdgeInsets.symmetric( horizontal: 32, vertical: 12, ), ), child: Text(actionText!), ), ], ], ), ), ); } } /// No Data Widget - Widget untuk menampilkan tidak ada data class NoDataWidget extends StatelessWidget { final String? message; const NoDataWidget({ super.key, this.message, }); @override Widget build(BuildContext context) { return EmptyState( icon: Icons.inbox_outlined, title: 'Tidak Ada Data', message: message ?? 'Belum ada data yang tersedia', ); } } /// No Connection Widget - Widget untuk menampilkan tidak ada koneksi class NoConnectionWidget extends StatelessWidget { final VoidCallback? onRetry; const NoConnectionWidget({ super.key, this.onRetry, }); @override Widget build(BuildContext context) { return EmptyState( icon: Icons.wifi_off_outlined, title: 'Tidak Ada Koneksi', message: 'Periksa koneksi internet Anda dan coba lagi', actionText: 'Coba Lagi', onAction: onRetry, ); } }