Now for some internet optimism.

at_contacts_flutter

A flutter plugin project for CRUD operations on contacts.

Getting Started

This plugin provides two screens:

Contacts

This lists the contacts. From this screen a new contact can be added. Also, an existing contact can be blocked or deleted.

Blocked Contacts

This screen lists the blocked contacts. It also gives the option to unblock a contact in it.

Sample usage

It is expected that the app will first create an AtClientService instance and authenticate an atsign.

The contacts service needs to be initialised with the atClient from the AtClientService, current atsign and the root server.

initializeContactsService(
        clientSdkService.atClientServiceInstance.atClient, currentAtSign,
        rootDomain: MixedConstants.ROOT_DOMAIN);

Navigating to the contacts or blocked contacts is done simply by using:

Navigator.of(context).push(MaterialPageRoute(
        builder: (BuildContext context) => ContactsScreen(),
    ));

or

Navigator.of(context).push(MaterialPageRoute(
    builder: (BuildContext context) => BlockedScreen(),
));

Libraries

at_contacts_flutter
screens/blocked_screen
Screen exposed to see blocked contacts and unblock them
screens/contacts_screen
The screen which is exposed from the library for displaying, adding, selecting and deleting Contacts, takes in @param context to get the app context @param currentAtsing to get the contacts for the give atSign @param selectedList is a callback function to return back the selected list from the screen to the app @param asSelectionScreen toggles between the selection type screen of to display the contacts
services/contact_service
A service to handle CRUD operation on contacts
utils/colors
utils/exposed_service
utils/images
utils/init_contacts_service
utils/text_strings
utils/text_styles
widgets/add_contacts_dialog
A popup to ask the AtSign which is to be added
widgets/add_singular_contact_dialog
widgets/blocked_user_card
A list tile to display the blocked contact takes in a AtContact blocked user and displays it's name, atsign, profile picture and option to unblock the user
widgets/bottom_sheet
A bottom sheet widget to diaplay the number of contacts selected from contact list and what to do of that list on press of Done takes in @param onPressed which defines what to be executed on press of Done @param selectedList is a ValueChanged function which return the selected contacts to be used outside of package.
widgets/circular_contacts
widgets/contacts_initials
This is a widget to display the initials of an atsign which does not have a profile picture it takes in @param size as a double and @param initials as String and display those initials in a circular avatar with random colors
widgets/custom_circle_avatar
A customized circular avatar to display the profile picture with a small border takes in @param image for the asset image @param size to define the size of the avatar @param nonAsset if the image is coming over the network @param byteImage to display the image from the netwok
widgets/custom_list_tile
A custom list tile to display the contacts takes in a function @param onTap to define what happens on tap of the tile @param onTrailingPresses to set the behaviour for trailing icon @param asSelectionTile to toggle whether the tile is selectable to select contacts @param contact for details of the contact @param contactService to get an instance of AtContactsImpl
widgets/custom_search_field
A search field to filter out the contacts
widgets/error_screen
widgets/horizontal_list_view