Advanced Native Contact Picker
Zero-permission native Flutter plugin for picking contacts on Android & iOS using modern system UIs (CNContactPickerViewController & ACTION_PICK), eliminating explicit READ_CONTACTS manifest permissions.
- Zero Permissions Required: Operates using native system picker flows (CNContactPickerViewController on iOS and zero-permission ACTION_PICK / API 37+ Contact Picker on Android), granting temporary read access without requiring explicit READ_CONTACTS permissions.
- Single & Multi Selection: Supports picking a single contact or enabling multi-selection mode with configurable selection limits (allowMultiple: true, selectionLimit: 5).
- Native Selection Action Sheet (iOS): Automatically presents a native bottom sheet when a contact has multiple numbers or emails so the user can choose the exact entry.
- Configurable Fields: Flexible data fetching for phone numbers only (default) or including email addresses (includeEmail: true).
- Clean Strongly-Typed Models: Returns strongly-typed NativeContact models (lookupKey, name, phones, emails) and LabeledValue objects (label, value).
Technologies & Architecture Stack
// 1. Add dependency to pubspec.yaml
dependencies:
advanced_native_contact_picker: ^latest_version
// 2. Zero-permission contact selection
final List<NativeContact> contacts = await NativeContactPicker.pickContact(
allowMultiple: true,
includeEmail: true,
);
Operates using native system picker flows (CNContactPickerViewController on iOS and ACTION_PICK / API 37+ Contact Picker on Android), granting temporary user-selected read access without requiring broad READ_CONTACTS permissions.
When a selected contact has multiple telephone numbers or email addresses, iOS automatically presents a native action sheet bottom sheet so the user can choose the exact entry with zero custom UI overhead.
- • lookupKey: String (Unique ID)
- • name: String (Full name)
- • phones: List<LabeledValue>
- • emails: List<LabeledValue>
- • label: String (e.g., "mobile", "work")
- • value: String (Phone / Email)