import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart'; import 'package:contacts_dataist_ir/models/contact.dart'; import 'package:contacts_dataist_ir/database/database_helper.dart'; class ContactListScreen extends StatefulWidget { const ContactListScreen({super.key}); @override State createState() => _ContactListScreenState(); } class _ContactListScreenState extends State { final DatabaseHelper _dbHelper = DatabaseHelper(); List _contacts = []; bool _isLoading = true; @override void initState() { super.initState(); _loadContacts(); } Future _loadContacts() async { setState(() { _isLoading = true; }); try { final contacts = await _dbHelper.getContacts(); setState(() { _contacts = contacts; }); } catch (e) { if (kDebugMode) { print('Error loading contacts: $e'); } } finally { setState(() { _isLoading = false; }); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Contacts Dataist IR'), backgroundColor: Theme.of(context).colorScheme.primary, ), body: _isLoading ? const Center(child: CircularProgressIndicator()) : _contacts.isEmpty ? const Center( child: Text( 'No contacts found. Add a new one!', style: TextStyle(fontSize: 18), ), ) : ListView.builder( itemCount: _contacts.length, itemBuilder: (context, index) { final contact = _contacts[index]; return Card( margin: const EdgeInsets.symmetric( horizontal: 10, vertical: 5, ), child: ListTile( title: Text(contact.name), subtitle: Text( contact.phone ?? contact.email ?? 'No phone or email', ), onTap: () { if (kDebugMode) { print('Tapped on ${contact.name}'); } }, trailing: IconButton( icon: const Icon(Icons.delete, color: Colors.red), onPressed: () async { if (kDebugMode) { print('Delete ${contact.name}'); } await _dbHelper.deleteContact(contact.id!); _loadContacts(); }, ), ), ); }, ), floatingActionButton: FloatingActionButton( onPressed: () { if (kDebugMode) { print('Add New Contact'); } }, child: const Icon(Icons.add), ), ); } }