feat: composition-page: call sms add contact

This commit is contained in:
Florian Griffon 2024-12-15 02:57:55 +01:00
parent ee8d26bd9d
commit 3cb06f2e93

View File

@ -1,6 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter_contacts/flutter_contacts.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../widgets/contact_service.dart';
import '../contacts/widgets/add_contact_button.dart';
class CompositionPage extends StatefulWidget {
const CompositionPage({super.key});
@ -63,9 +65,24 @@ class _CompositionPageState extends State<CompositionPage> {
});
}
// Placeholder function for adding contact
void addContact(String number) {
// This function is empty for now
// Function to call a contact's number
void _launchPhoneDialer(String phoneNumber) async {
final uri = Uri(scheme: 'tel', path: phoneNumber);
if (await canLaunchUrl(uri)) {
await launchUrl(uri);
} else {
debugPrint('Could not launch $phoneNumber');
}
}
// Function to send an SMS to a contact's number
void _launchSms(String phoneNumber) async {
final uri = Uri(scheme: 'sms', path: phoneNumber);
if (await canLaunchUrl(uri)) {
await launchUrl(uri);
} else {
debugPrint('Could not send SMS to $phoneNumber');
}
}
@override
@ -90,19 +107,20 @@ class _CompositionPageState extends State<CompositionPage> {
child: ListView(
children: _filteredContacts.isNotEmpty
? _filteredContacts.map((contact) {
final phoneNumber = contact.phones.isNotEmpty
? contact.phones.first.number
: 'No phone number';
return ListTile(
title: Text(
contact.displayName,
style:
const TextStyle(color: Colors.white),
),
subtitle: contact.phones.isNotEmpty
? Text(
contact.phones.first.number,
style: const TextStyle(
color: Colors.grey),
)
: null,
subtitle: Text(
phoneNumber,
style:
const TextStyle(color: Colors.grey),
),
trailing: Row(
mainAxisSize: MainAxisSize.min,
children: [
@ -112,18 +130,16 @@ class _CompositionPageState extends State<CompositionPage> {
color: Colors.green[300],
size: 20),
onPressed: () {
print(
'Calling ${contact.displayName}');
_launchPhoneDialer(phoneNumber);
},
),
// Text button
// Message button
IconButton(
icon: Icon(Icons.message,
color: Colors.blue[300],
size: 20),
onPressed: () {
print(
'Texting ${contact.displayName}');
_launchSms(phoneNumber);
},
),
],
@ -228,20 +244,19 @@ class _CompositionPageState extends State<CompositionPage> {
),
),
),
// Add Contact Button with empty function call
Padding(
padding: const EdgeInsets.only(bottom: 20.0),
child: FloatingActionButton(
backgroundColor: Colors.blue,
onPressed: () {
addContact(dialedNumber);
},
child: const Icon(Icons.person_add, color: Colors.white),
),
),
],
),
// Add Contact Button
Positioned(
bottom: 20.0,
left: 0,
right: 0,
child: Center(
child: AddContactButton(),
),
),
// Top Row with Back Arrow
Positioned(
top: 40.0,