contacts_service 0.3.3

contacts_service #

pub package Build Status Coverage Status

A Flutter plugin to access and manage the device's contacts.

Usage #

To use this plugin, add contacts_service as a dependency in your pubspec.yaml file.
For example:

dependencies:  
    contacts_service: ^0.3.3

Permissions #

Android #

Add the following permissions to your AndroidManifest.xml:

<uses-permission android:name="android.permission.READ_CONTACTS" />  
<uses-permission android:name="android.permission.WRITE_CONTACTS" />  

iOS #

Set the NSContactsUsageDescription in your Info.plist file

<key>NSContactsUsageDescription</key>  
<string>This app requires contacts access to function properly.</string>  

Note
contacts_service does not handle the process of asking and checking for permissions. To check and request user permission to access contacts, try using the following plugins: flutter_simple_permissions or permission_handler.

If you do not request user permission or have it granted, the application will fail. For testing purposes, you can manually set the permissions for your test app in Settings for your app on the device that you are using. For Android, go to "Settings" - "Apps" - select your test app - "Permissions" - then turn "on" the slider for contacts.

Example #

// Import package  
import 'package:contacts_service/contacts_service.dart';  
  
// Get all contacts on device
Iterable<Contact> contacts = await ContactsService.getContacts();  

// Get all contacts without thumbnail(faster)
Iterable<Contact> contacts = await ContactsService.getContacts(withThumbnails: false);
  
// Get contacts matching a string
Iterable<Contact> johns = await ContactsService.getContacts(query : "john");

// Add a contact  
// The contact must have a firstName / lastName to be successfully added  
await ContactsService.addContact(newContact);  
  
// Delete a contact
// The contact must have a valid identifier
await ContactsService.deleteContact(contact);  

// Update a contact
// The contact must have a valid identifier
await ContactsService.updateContact(contact);

// Share a contact as a vcf
await shareVCFCard(context, contact: contact),

Contact Model

// Name
String displayName, givenName, middleName, prefix, suffix, familyName;

// Company
String company, jobTitle;

// Email addresses
Iterable<Item> emails = [];

// Phone numbers
Iterable<Item> phones = [];

// Post addresses
Iterable<PostalAddress> postalAddresses = [];

// Contact avatar/thumbnail
Uint8List avatar;

Example

Contributions #

Contributions are welcome! If you find a bug or want a feature, please fill an issue.

If you want to contribute code please create a pull request under the staging branch.

Credits #

Heavily inspired from rt2zz's react native plugin

[0.3.3] - September 12, 2019

  • Example app, removed references to notes field removed in v0.3.1 (@lukasgit)

[0.3.2] - September 10, 2019

  • Fixed swift_version error (@adithyaxx)
  • Removed executable file attributes (@creativepsyco)
  • Removed references to notes field removed in v0.3.1 (@lukasgit)

[0.3.1] - September 8, 2019

  • Added order by given name, now contacts come sorted from the device (@Tryneeth)
  • Return contacts that start with query instead of contains (@dakaugu)
  • Removed notes field due to iOS 13 blocking access (@imvm)

[0.3.0] - August 5th, 2019

  • Closed image streams and cursors on Android (@budo385)

[0.2.9] - July 19th, 2019

  • File cleanup and removed .iml references. Use "flutter clean" to clear build files and re-build

[0.2.8] - June 24th, 2019

  • Android add avatar image - was not working.
  • Android and iOS - update avatar image.
  • Android custom phone label - adding label other then predefined ones sets the label to specified value.
  • Android and iOS - on getContacts get the higher resolution image (photoHighResolution). Only when withThumbnails is true. photoHighResolution set to default when getting contact. Default is photoHighResolution = true because if you update the contact after getting, it will update the original size picture.
  • Android and iOS - getContactsForPhone(String phone, {bool withThumbnails = true, bool photoHighResolution = true}) - gets the contacts with phone filter.

[0.2.7] - May 24th, 2019

  • Removed path_provider

[0.2.6] - May 9th, 2019

  • Removed share_extend
  • Updated example app
  • Bug fixes

[0.2.5] - April 20th, 2019

  • Added Notes support, and updateContact for Android fix
  • Added Note support for iOS
  • Added public method to convert contact to map using the static _toMap
  • Updated tests
  • Updated example app
  • Bug fixes

[0.2.4] - March 12th, 2019

  • Added support for more phone labels
  • Bug fixes

[0.2.3] - March 2nd, 2019

  • Added permission handling to example app
  • Fixed build errors for Android & iOS

[0.2.2] - March 1st, 2019

  • Feature: Update Contact for iOS & Android
  • Added updateContact method to contacts_service.dart
  • Added updateContact method to SwiftContactsServicePlugin.swift
  • Added unit testing for the updateContact method
  • Fixed formatting discrepancies in the example app (making code easier to read)
  • Fixed formatting discrepancies in contacts_service.dart (making code easier to read)
  • AndroidX compatibility fix for example app
  • Updated example app to show updateContacts method
  • Fixed example app bugs
  • Updated PostalAddress.java and Contact.java (wasn't working properly)
  • Added updateContact method to ContactsServicePlugin.java

[0.2.1] - February 21st, 2019

  • Breaking: Updated dependencies

[0.2.0] - February 19th, 2019

  • Breaking: Updated to support AndroidX

[0.1.1] - January 11th, 2019

  • Added Ability to Share VCF Card (@AppleEducate)

[0.1.0] - January 4th, 2019

  • Update pubspec version and maintainer info for Dart Pub
  • Add withThumbnails and update example (@trinqk)

[0.0.9] - October 10th, 2018

  • Fix an issue when fetching contacts on Android

[0.0.8] - August 16th, 2018

  • Fix an issue with phones being added to emails on Android
  • Update plugin for dart 2

[0.0.7] - July 10th, 2018

  • Fix PlatformException on iOS
  • Add a refresh to the contacts list in the sample app when you add a contact
  • Return more meaningful errors when addContact() fails on iOS
  • Code tidy up

[0.0.6] - April 13th, 2018

  • Add contact thumbnails

[0.0.5] - April 5th, 2018

  • Fix with dart2 compatibility

[0.0.4] - February 1st, 2018

  • Implement deleteContact(Contact c) for Android and iOS

[0.0.3] - January 31st, 2018

  • Implement addContact(Contact c) for Android and iOS

[0.0.2] - January 30th, 2018

  • Now retrieving contacts' prefixes and suffixes

[0.0.1] - January 30th, 2018

  • All contacts can be retrieved
  • Contacts matching a string can be retrieved

example/README.md

contacts_service_example #

Demonstrates how to use the contacts_service plugin.

Getting Started #

For help getting started with Flutter, view our online documentation.

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  contacts_service: ^0.3.3

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:contacts_service/contacts_service.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
96
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
98
Learn more about scoring.

We analyzed this package on Sep 20, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.5.0
  • pana: 0.12.21
  • Flutter: 1.9.1+hotfix.2

Platforms

Detected platforms: Flutter

References Flutter, and has no conflicting libraries.

Health suggestions

Format lib/share.dart.

Run flutter format to format lib/share.dart.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.0.0-dev.58.0.flutter-f981f09760 <3.0.0
collection ^1.14.11 1.14.11 1.14.12
flutter 0.0.0
quiver >=2.0.0 <3.0.0 2.0.5
Transitive dependencies
matcher 0.12.5
meta 1.1.7
path 1.6.4
sky_engine 0.0.99
stack_trace 1.9.3
typed_data 1.1.6
vector_math 2.0.8
Dev dependencies
flutter_test
test ^1.3.0