import 'package:flutter/material.dart'; import 'package:flutter_contacts/flutter_contacts.dart'; import 'package:qr_flutter/qr_flutter.dart'; class ContactService { Future> fetchContacts() async { if (await FlutterContacts.requestPermission()) { List contacts = await FlutterContacts.getContacts( withProperties: true, withThumbnail: true, ); return contacts; } else { // Permission denied return []; } } Future> fetchFavoriteContacts() async { if (await FlutterContacts.requestPermission()) { // Get all contacts and filter for favorites List allContacts = await FlutterContacts.getContacts( withProperties: true, withThumbnail: true, ); return allContacts.where((c) => c.isStarred).toList(); } else { // Permission denied return []; } } Future addNewContact(Contact contact) async { if (await FlutterContacts.requestPermission()) { try { return await FlutterContacts.insertContact(contact); } catch (e) { debugPrint('Error adding contact: $e'); return null; } } return null; } void showContactQRCodeDialog(BuildContext context, Contact contact) { final String vCard = contact.toVCard(); showDialog( context: context, builder: (BuildContext context) { return AlertDialog( backgroundColor: Colors.grey[900], title: Text( 'QR Code for ${contact.displayName}', style: const TextStyle(color: Colors.white), ), content: Column( mainAxisSize: MainAxisSize.min, children: [ Container( color: Colors.white, padding: const EdgeInsets.all(16.0), child: QrImageView( data: vCard, version: QrVersions.auto, size: 200.0, ), ), const SizedBox(height: 16.0), const Text( 'Scan this code to add this contact', style: TextStyle(color: Colors.white70), ), ], ), actions: [ TextButton( onPressed: () => Navigator.of(context).pop(), child: const Text('Close'), ), ], ); }, ); } }