-
Flutter 연락처 추가 예시DEV/flutter (dart) 2023. 2. 8. 15:33
준비물 : 패키지 다운로드 및 권한요청 설정 (하단 링크 참조)
https://seokbong.tistory.com/164
ref.
https://pub.dev/documentation/contacts_service/latest/
ContactsService 예시
// 접근권한, 연락처 관련 패키지 import 'package:permission_handler/permission_handler.dart'; import 'package:contacts_service/contacts_service.dart'; ...(대충 코드들) // 연락처 접근 권한 함수 예시 getPermission() async { // 기기에서 해당 함수를 처음 실행하는 경우 연락처를 허용 여부를 물어봄 var status = await Permission.contacts.status; if(status.isGranted) { // 허가된 경우 ... (필요한 코드를 작성) } else if (status.isDenied) { // 거절된 경우 openAppSettings(); // 앱 설정화면 켜줌 (앱에서 사용자가 직접 허가해야함) } } // 연락처 추가 예시 addFriend() async { var newFriend = Contact(); // 연락처 추가 대상의 정보입력 (이름, 번호 외 이메일 등 다양한 정보 기입 가능) newPerson.familyName = '엄'; newFriend.givenName = '준식'; newPerson.phones = [Item(label: "mobile", value: '010...'])]; // 연락처 추가 await ContactsService.addContact(newPerson); } // 연락처 불러오기 예시 showFriends() async { // 연락처 가져오기 (withThumbnails : 썸네일을 포함 할것인지?) var contacts = await ContactsService.getContacts(withThumbnails: false); // 다른 방법으로 불러와도 된다. 아래 코드는 for문을 사용하여 모든 연락처에 접근하는 예시) // * 하단 방법은 예시 코드로 해당 코드를 사용하면 null 처리가 안되어 에러가 뜰 수 있다. // * 꼭 null 처리를 해주자. for(var contact in contacts) { var name = contact.displayName.toString(); // full name var number = contact.phones.first.value.toString(); // 첫 번째 번호를 가져온다 } }
setState 예시
// =========================================================================================== // * 연락처가 추가되거나 수정될 때, 화면을 re-rendering 해야하는 경우 setState 함수를 활용하자. // https://seokbong.tistory.com/139 // setState 구성 예시. // =========================================================================================== var friends = []; showFriends() async { // 연락처 가져오기 var contacts = await ContactsService.getContacts(withThumbnails: false); var name = ''; var callNum = ''; var arr = []; for(var contact in contacts) { var chkPhones = contact.phones?.isEmpty; name = contact.displayName.toString(); if(chkPhones == false) { callNum = contact.phones!.first.value.toString(); } arr.add({ 'displayName': name, 'callNum': callNum }); } setState(() { friends = arr; }); }
'DEV > flutter (dart)' 카테고리의 다른 글
Flutter dart에서의 Null with !, ? 키워드 (Dart 문법 / Null safety) (0) 2023.02.08 Flutter 자료형(Type) 확인하는 법 (Dart 문법) (0) 2023.02.08 Flutter 유저 앱 권한 요청 Manifest.xml 설정 (0) 2023.02.06 Flutter exception in phase 'semantic analysis' in source unit '_BuildScript_' Unsupported class file major version 에러 (0) 2023.02.06 Flutter 자식 위젯에서 부모 위젯 함수에 매개변수 전달하기 (0) 2023.02.06