The Atsign FoundationThe Atsign Foundation

pub package gitHub license

Overview

The at_contacts_group_flutter package is for Flutter developers who want to add the group functionality to their apps on atPlatform.

This open source package is written in Dart, supports Flutter and follows the atPlatform's decentralized, edge computing model with the following features:

  • Cryptographic control of data access through personal data stores
  • No application backend needed
  • End to end encryption where only the data owner has the keys
  • Private and surveillance free connectivity
  • Create and manage groups

We call giving people control of access to their data “flipping the internet” and you can learn more about how it works by reading this overview.

Get started

There are three options to get started using this package.

1. Quick start - generate a skeleton app with at_app

This package includes a working sample application in the Example directory that you can use to create a personalized copy using at_app create in four commands.

$ flutter pub global activate at_app 
$ at_app create --sample=<package ID> <app name> 
$ cd <app name>
$ flutter run

Notes:

  1. You only need to run flutter pub global activate once
  2. Use at_app.bat for Windows

2. Clone it from GitHub

Feel free to fork a copy the source from the GitHub repo. The example code contained there is the same as the template that is used by at_app above.

$ git clone https://github.com/atsign-foundation/at_widgets.git

3. Manually add the package to a project

Instructions on how to manually add this package to you project can be found on pub.dev here.

How it works

This package utilises the at_contact dart package and provides the CRUD feature on group of contacts.

Setup

Initialising:

The groups service along with the contacts service needs to be initialised with the root server.

initializeContactsService(rootDomain: AtEnv.rootDomain);
initializeGroupService(rootDomain: AtEnv.rootDomain);

Usage

Navigating to the groups list is done simply by using:

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

Open source usage and contributions

This is open source code, so feel free to use it as is, suggest changes or enhancements or create your own version. See CONTRIBUTING.md for detailed guidance on how to setup tools, tests and make a pull request.

Libraries

widgets/add_contacts_group_dialog
A popup to ask the AtSign which is to be added
widgets/add_single_contact_group
at_contacts_group_flutter
widgets/bottom_sheet
widgets/circular_contacts
widgets/circular_group_contact
utils/colors
widgets/confirmation_dialog
widgets/contact_initial
widgets/contacts_selction_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/custom_circle_avatar
widgets/custom_input_field
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_popup_route
widgets/custom_toast
desktop_screens/desktop_bottom_sheet
widgets/desktop_custom_input_field
widgets/desktop_custom_person_tile
desktop_screens/desktop_empty_group
desktop_screens/desktop_group_detail
desktop_screens/desktop_group_initial_screen
desktop_screens/desktop_group_list
desktop_screens/desktop_group_view
widgets/desktop_header
services/desktop_image_picker
desktop_screens/desktop_new_group
widgets/desktop_person_horizontal_tile
widgets/desktop_person_vertical_tile
desktop_routes/desktop_route_names
desktop_routes/desktop_routes
screens/empty_group/empty_group
widgets/error_screen
screens/group_contact_view/group_contact_view
models/group_contacts_model
screens/edit/group_edit
screens/list/group_list
services/group_service
screens/group_view/group_view
widgets/horizontal_circular_list
services/image_picker
utils/images
utils/init_group_service
widgets/loading_widget
screens/new_group/new_group
screens/edit/person_horizontal
widgets/person_horizontal_tile
widgets/person_vertical_tile
widgets/pop_button
widgets/remove_trusted_contact_dialog
utils/text_constants
utils/text_styles
widgets/triple_dot_loading
widgets/yes_no_dialog