Moved Services to /services
All checks were successful
/ mirror (push) Successful in 4s

This commit is contained in:
stcb 2025-01-17 14:37:06 +02:00
parent cc849c83b1
commit 475f432047
6 changed files with 53 additions and 51 deletions

View File

@ -1,7 +1,9 @@
// lib/pages/composition_page.dart
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_contacts/flutter_contacts.dart'; import 'package:flutter_contacts/flutter_contacts.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import '../../widgets/contact_service.dart'; import '../../services/contact_service.dart';
import '../contacts/widgets/add_contact_button.dart'; import '../contacts/widgets/add_contact_button.dart';
class CompositionPage extends StatefulWidget { class CompositionPage extends StatefulWidget {
@ -107,50 +109,50 @@ class _CompositionPageState extends State<CompositionPage> {
child: ListView( child: ListView(
children: _filteredContacts.isNotEmpty children: _filteredContacts.isNotEmpty
? _filteredContacts.map((contact) { ? _filteredContacts.map((contact) {
final phoneNumber = contact.phones.isNotEmpty final phoneNumber = contact.phones.isNotEmpty
? contact.phones.first.number ? contact.phones.first.number
: 'No phone number'; : 'No phone number';
return ListTile( return ListTile(
title: Text( title: Text(
'${contact.displayName.isNotEmpty ? contact.displayName[0] : ''}...${contact.displayName.isNotEmpty ? contact.displayName[contact.displayName.length - 1] : ''}', '${contact.displayName.isNotEmpty ? contact.displayName[0] : ''}...${contact.displayName.isNotEmpty ? contact.displayName[contact.displayName.length - 1] : ''}',
// contact.displayName // contact.displayName
style: style:
const TextStyle(color: Colors.white), const TextStyle(color: Colors.white),
), ),
subtitle: Text( subtitle: Text(
'${phoneNumber.isNotEmpty ? phoneNumber[0] : ''}...${phoneNumber.isNotEmpty ? phoneNumber[phoneNumber.length - 1] : ''}', '${phoneNumber.isNotEmpty ? phoneNumber[0] : ''}...${phoneNumber.isNotEmpty ? phoneNumber[phoneNumber.length - 1] : ''}',
// phoneNumber, // phoneNumber,
style: style:
const TextStyle(color: Colors.grey), const TextStyle(color: Colors.grey),
), ),
trailing: Row( trailing: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
// Call button // Call button
IconButton( IconButton(
icon: Icon(Icons.phone, icon: Icon(Icons.phone,
color: Colors.green[300], color: Colors.green[300],
size: 20), size: 20),
onPressed: () { onPressed: () {
_launchPhoneDialer(phoneNumber); _launchPhoneDialer(phoneNumber);
},
),
// Message button
IconButton(
icon: Icon(Icons.message,
color: Colors.blue[300],
size: 20),
onPressed: () {
_launchSms(phoneNumber);
},
),
],
),
onTap: () {
// Handle contact selection if needed
}, },
); ),
}).toList() // Message button
IconButton(
icon: Icon(Icons.message,
color: Colors.blue[300],
size: 20),
onPressed: () {
_launchSms(phoneNumber);
},
),
],
),
onTap: () {
// Handle contact selection if needed
},
);
}).toList()
: [], : [],
), ),
), ),
@ -199,7 +201,7 @@ class _CompositionPageState extends State<CompositionPage> {
children: [ children: [
Row( Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceEvenly, MainAxisAlignment.spaceEvenly,
children: [ children: [
_buildDialButton('1'), _buildDialButton('1'),
_buildDialButton('2'), _buildDialButton('2'),
@ -208,7 +210,7 @@ class _CompositionPageState extends State<CompositionPage> {
), ),
Row( Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceEvenly, MainAxisAlignment.spaceEvenly,
children: [ children: [
_buildDialButton('4'), _buildDialButton('4'),
_buildDialButton('5'), _buildDialButton('5'),
@ -217,7 +219,7 @@ class _CompositionPageState extends State<CompositionPage> {
), ),
Row( Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceEvenly, MainAxisAlignment.spaceEvenly,
children: [ children: [
_buildDialButton('7'), _buildDialButton('7'),
_buildDialButton('8'), _buildDialButton('8'),
@ -226,7 +228,7 @@ class _CompositionPageState extends State<CompositionPage> {
), ),
Row( Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceEvenly, MainAxisAlignment.spaceEvenly,
children: [ children: [
_buildDialButton('*'), _buildDialButton('*'),
_buildDialButton('0'), _buildDialButton('0'),

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_contacts/flutter_contacts.dart'; import 'package:flutter_contacts/flutter_contacts.dart';
import '../../widgets/contact_service.dart'; import '../../services/contact_service.dart';
class ContactState extends StatefulWidget { class ContactState extends StatefulWidget {
final Widget child; final Widget child;

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_contacts/flutter_contacts.dart'; import 'package:flutter_contacts/flutter_contacts.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import 'package:dialer/widgets/username_color_generator.dart'; import 'package:dialer/widgets/username_color_generator.dart';
import '../../../widgets/block_service.dart'; import '../../../services/block_service.dart';
class ContactModal extends StatefulWidget { class ContactModal extends StatefulWidget {
final Contact contact; final Contact contact;

View File

@ -5,7 +5,7 @@ import 'package:dialer/features/history/history_page.dart';
import 'package:dialer/features/composition/composition.dart'; import 'package:dialer/features/composition/composition.dart';
import 'package:flutter_contacts/flutter_contacts.dart'; import 'package:flutter_contacts/flutter_contacts.dart';
import 'package:dialer/features/settings/settings.dart'; import 'package:dialer/features/settings/settings.dart';
import '../../widgets/contact_service.dart'; import '../../services/contact_service.dart';
class _MyHomePageState extends State<MyHomePage> class _MyHomePageState extends State<MyHomePage>
with SingleTickerProviderStateMixin { with SingleTickerProviderStateMixin {