A Flutter plugin to read, create, update and delete the device's contacts and to open the native contact form and picker on Android and iOS.
Usage, permissions and the API reference are in the
contactos README.
import 'package:contactos/contactos.dart';
final contacts = await Contactos.instance.getContacts(withThumbnails: false);The plugin uses the federated plugin architecture.
| Package | Description | Pub |
|---|---|---|
contactos |
App-facing package | |
contactos_platform_interface |
Platform interface and models | |
contactos_android |
Android implementation (Java, Contacts Provider) | |
contactos_foundation |
iOS implementation (Swift, Contacts framework) |
See docs/architecture.md for how the packages fit together.
contactos/
├── contactos/ # App-facing package
│ ├── example/ # Example app (also renders the screenshots)
│ └── screenshots/ # README and pub.dev screenshots
├── contactos_platform_interface/ # ContactosPlatform, MethodChannelContactos, models
├── contactos_android/ # Android implementation
│ ├── android/ # Java plugin and JVM tests
│ └── example/
├── contactos_foundation/ # iOS implementation
│ ├── darwin/ # Swift plugin (CocoaPods and Swift Package Manager)
│ ├── example/ # Example app with the RunnerTests XCTest target
│ └── tool/ # iOS native test and coverage scripts
├── contactos_test/ # Widget tests shared by the example apps (not published)
├── docs/ # Architecture notes
├── mise.toml # Toolchain for mise
├── .fvmrc # Toolchain for FVM
└── Makefile # Repository-wide make targets
Install the toolchain with mise or FVM, then validate everything:
mise install # or: fvm use
make get
make all # format + analyze + pana + unit testsThe Makefiles use fvm when it is installed and the SDK from PATH
otherwise. See CONTRIBUTING.md for the toolchain setup,
native tests, screenshots and the release workflow, and
.github/AUTOMATION.md for CI, publishing, labels and
notifications.
Each package has its own changelog:
Contributions are welcome! If you find a bug or want a feature, please open an issue. To contribute code, read CONTRIBUTING.md and open a pull request.
If you want to support the development of the library:



