diff --git a/lib/screens/contact_list_screen.dart b/lib/screens/contact_list_screen.dart new file mode 100644 index 0000000..6e53b18 --- /dev/null +++ b/lib/screens/contact_list_screen.dart @@ -0,0 +1,95 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.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), + ), + ); + } +} \ No newline at end of file