flutter_native_contact_picker_plus 1.3.0
flutter_native_contact_picker_plus: ^1.3.0 copied to clipboard
An enhanced version of flutter_native_contact_picker for selecting contacts from the address book.
1.3.0 Major Android Stability Patch #
🧩 Fixes & Improvements #
-
🛠 Fixed critical crash caused by
java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow
This issue occurred when certain contact columns (likePHOTO_URIorLOOKUP_KEY) were missing from the query projection.
✅ Resolved by adding safe column index handling across all cursor lookups.
(#2 — thanks @zjJunZhu) -
☎️ Added explicit phone type mapping —
home,mobile,work, andother
to make phone number fields more descriptive and consistent across Android devices.
Thanks @StephenOelofsePropMe for the contribution!
(#1) -
🚀 Improved Android data safety:
- Added helper methods
getStringSafe()andgetIntSafe()to prevent invalid cursor reads. - Ensures compatibility across various OEM contact providers (Samsung, Xiaomi, Huawei, etc.).
- Added helper methods
-
🧠 Code cleanup & refactoring:
- Streamlined
onActivityResult()with safer cursor handling. - Improved error logs and fallback handling for missing contact data.
- Streamlined
⚙️ Build Configuration Updates #
- 📱 compileSdkVersion: 36
- 📱 minSdkVersion: 21
- ⚙️ Android Gradle Plugin: 8.13.0
- 🔒 Enforced latest AndroidX and Kotlin compatibility.
🔮 Coming Soon (v2.0.0 Roadmap) #
- Smart permission layer with auto-request fallback
- Developer-selectable contact fields (e.g. name, email, avatar)
- Unified address & organization data model
- vCard export/import and live contact change listener
Thanks to all contributors! 🙌
flutter_native_contact_picker_plus is now safer, faster, and more reliable on Android.
1.1.1 Swift Package Manager #
- fix ios issues.
- support the Swift package manager
1.0.0 Major Update #
🚀 New Features #
- Added
selectPhoneNumbermethod to select a specific phone number from a contact.
📱 Extended Contact Fields #
Most fields require permission and will be returned only if access is granted. The plugin works gracefully even if the permission is not provided.
selectedPhoneNumber: Used with theselectPhoneNumbermethod.emailAddresses: List of emails with labels.
RequiresREAD_CONTACTSon Android / user authorization on iOS.avatar: Base64-encoded image of the contact.
Requires permission on both platforms.postalAddresses: Includes street, city, state, postal code, country, and label.
Requires permission.organizationInfo: Contains company and job title.
Requires permission.birthday: ISO 8601 formatted date string.
Requires permission.notes: Free-form notes.
Requires permission.websiteURLs: List of contact-related website URLs.
Requires permission (Android only).
💡 Enhancements #
- Improved example app to showcase all available methods and fields.
- Graceful fallback when permissions are denied (fields return
nullor empty). - Updated Android and iOS implementations for better compatibility.
0.0.2 Patch #
- Fixed iOS issues.
0.0.1 Initial Release #
- First release of the package.