raw_contacts 0.0.4

  • Readme
  • Changelog
  • Example
  • Installing
  • 40

raw_contacts #

A Flutter plugin to access and manage the device's contacts. (Android Only for now)

Usage #

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

    raw_contacts: ^0.0.1

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" />

Note raw_contacts 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:raw_contacts/raw_contacts.dart';
String _accountType="com.test_app";

// Get all contact list for the account type
Iterable<Contact> contacts = await RawContacts.getContacts(filter: _accountType);

// Get all contacts without thumbnail(faster)
Iterable<Contact> contacts = await RawContacts.getContacts(getImages: false,filter: _accountType);

// Add a contact
// The contact must have at least DisplayName and Email
await RawContacts.addContact(newContact);

// Delete a contact
// The contact must have a valid identifier
await RawContacts.deleteContact(contact);

Contact Model

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

// Company
String company, jobTitle;

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

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

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

// Contact avatar/thumbnail
Uint8List avatar;

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.

[0.0.4] - April 22th, 2019 #

  • Added Update Contact with image (Image cannot be null)

[0.0.2] - April 4th, 2019 #

  • Fixed Contact creation with image

[0.0.1] - March 26th, 2019 #

  • Get all contact List from selected AccountType
  • Delete selected contact
  • Create contact for one accountType


import 'dart:async';
import 'dart:typed_data';

import 'package:flutter/material.dart';
import 'package:raw_contacts/raw_contacts.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  _MyAppState createState() => _MyAppState();

class _MyAppState extends State<MyApp> {
  Iterable<Contact> _contacts;
  String _accountType = "com.hub_games.langless";
  GlobalKey<ScaffoldState> _key = new GlobalKey<ScaffoldState>();

  void initState() {

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    var response = await RawContacts.getContacts(filter: _accountType);

    setState(() {
      _contacts = response;

    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.

  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
      key: _key,
      appBar: AppBar(
        title: const Text('Plugin example app'),
      body: ListView(
        children: _contacts != null
            ? _contacts
                  (test) => ListTile(
                        onTap: () {
                          test.displayName = "Super Test";
                          test.avatar = null;
                              accountType: _accountType, newContact: test);
                        leading: Container(
                          width: 50,
                          height: 50,
                          decoration: BoxDecoration(
                            image: DecorationImage(
                              image: test.avatar != null
                                  ? MemoryImage(test.avatar)
                                  : NetworkImage(
                                      "https://via.placeholder.com/200?text=" +
                                              .substring(0, 2)
                        title: Text(test.displayName),
                        subtitle: Text(test.emails.elementAt(0).value),
            : <Widget>[Container()],

Use this package as a library

1. Depend on it

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

  raw_contacts: ^0.0.4

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:raw_contacts/raw_contacts.dart';
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Learn more about scoring.

We analyzed this package on Apr 4, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.6
  • Flutter: 1.12.13+hotfix.8

Maintenance issues and suggestions

Homepage URL doesn't exist. (-20 points)

At the time of the analysis the homepage field https://hub-games.com/ was unreachable.

The package description is too short. (-20 points)

Add more detail to the description field of pubspec.yaml. Use 60 to 180 characters to describe the package, what it does, and its target use case.

Package is pre-v0.1 release. (-10 points)

While nothing is inherently wrong with versions of 0.0.*, it might mean that the author is still experimenting with the general direction of the API.


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.0.0-dev.68.0 <3.0.0
flutter 0.0.0
Transitive dependencies
collection 1.14.11 1.14.12
meta 1.1.8
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8