feat: add contact during call if contact is unknown
This commit is contained in:
parent
81187f4384
commit
ce7a5b10b0
@ -1,6 +1,7 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_contacts/flutter_contacts.dart';
|
||||||
import 'package:dialer/services/call_service.dart';
|
import 'package:dialer/services/call_service.dart';
|
||||||
import 'package:dialer/services/obfuscate_service.dart';
|
import 'package:dialer/services/obfuscate_service.dart';
|
||||||
import 'package:dialer/widgets/username_color_generator.dart';
|
import 'package:dialer/widgets/username_color_generator.dart';
|
||||||
@ -35,6 +36,8 @@ class _CallPageState extends State<CallPage> {
|
|||||||
StreamSubscription<String>? _callStateSubscription;
|
StreamSubscription<String>? _callStateSubscription;
|
||||||
StreamSubscription<Map<String, dynamic>>? _audioStateSubscription;
|
StreamSubscription<Map<String, dynamic>>? _audioStateSubscription;
|
||||||
|
|
||||||
|
bool get isNumberUnknown => widget.displayName == widget.phoneNumber;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
@ -198,6 +201,23 @@ class _CallPageState extends State<CallPage> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _addContact() async {
|
||||||
|
if (await FlutterContacts.requestPermission()) {
|
||||||
|
final newContact = Contact()..phones = [Phone(widget.phoneNumber)];
|
||||||
|
final updatedContact =
|
||||||
|
await FlutterContacts.openExternalInsert(newContact);
|
||||||
|
if (updatedContact != null) {
|
||||||
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
|
SnackBar(content: Text('Contact added successfully!')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
|
SnackBar(content: Text('Permission denied for contacts')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final double avatarRadius = isKeypadVisible ? 45.0 : 45.0;
|
final double avatarRadius = isKeypadVisible ? 45.0 : 45.0;
|
||||||
@ -416,11 +436,12 @@ class _CallPageState extends State<CallPage> {
|
|||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
children: [
|
children: [
|
||||||
|
if (isNumberUnknown)
|
||||||
Column(
|
Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
IconButton(
|
IconButton(
|
||||||
onPressed: () {},
|
onPressed: _addContact,
|
||||||
icon: const Icon(
|
icon: const Icon(
|
||||||
Icons.person_add,
|
Icons.person_add,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
|
Loading…
Reference in New Issue
Block a user