ref : 코딩 애플[Flutter로 만드는 iOS, Android 앱] 강의
사용자의 실제 연락처를 꺼내쓰는 법!
먼저 사용자한테 허락을 받아야 한다.(갤러리나 위치사용 허락받는 것처럼)
패키지를 하나 깔아야한다.
permission_handler 라고 함.
pubspec.yaml 파일에 가서 dependencies 에 저 코드를 추가해준다.
위에 전구가 하나 뜰텐데 누르면 pub get 이라고 뜬다
저거 누르면 알아서 설치 해준다.
더 세팅할게 필요한데
main.dart 파일로 가서 맨위에
import 'package:permission_handler/permission_handler.dart';
코드를 추가한다.
그리고 안드로이드 폰에서 permission 을 받고 싶으니까 다음처럼 되어있는지 확인함
다음도 확인한다
그리고 다음의 두줄 코드를 작성해준다
주소록을 읽고 쓸 수 있게 허락을 받기 위한 부분이다.
CONTACTS 가 아니라 나중엔 카메라 등으로 바꿀 수도 있겠다.
패키지 설치했으니 앱 미리보기 띄우고 있었다면 정지 눌렀다가 실행시켜서 반영시키자.
앱이 잘 뜬다면 잘 반영 된거다
실제로 유저한테 권한을 받아보자
함수로 작성했다
패키지 만든 사람이 정한 사용법이므로 코드는 가져다 쓰면 된다.
await 이란?
코드를 짜다보면 오래걸리는 코드가 있다
근데 dart 는 오래걸리는 줄은 제끼고 다음줄 실행하려고 한다
그러면 에러 생기니까 await 붙여서 다음 줄 실행 안하고 기다리게 만듦
async 붙어있어야 await 실행이 된다
그렇다고 await 를 막 쓸 수 있는 건 아니고 Future 에 부착가능한거다(future 개념은 나중에)
저 코드에서 Permission.contacts.request(); 코드는 팝업창을 띄운다.
getPermission 함수를 실행시켜보자
앱이 처음 실행될때 팝업창이 뜨도록 하고 싶다.
그럴 땐 initState 함수를 쓰면 된다
init 까지 치면 자동완성으로 뜬다.
initState 안에 적은 코드는 위젯이 로드될 때 한번 실행된다
아까 만들었던 함수를 이 함수 안에 넣어줬다
진짜 앱이 실행될때 뜨는지 봐야겠다
모바일 새로고침은 저 버튼이다(Hot Restart)
잘뜬다.
함부로 만지면 안되고
요즘 안드로이드 11이상, iOS 환경에서는 거절 2번 이상하면 팝업이 다시는 안뜨게 되어버린다.
allow 누르자
요즘 트렌드?
처음 로드 되자마자 권한 요구를 하지말고
연락처기능이 필요할때 그때 띄우기
연락처 가져오기 버튼을 만들어보자
appBar 에 IconButton 을 만들어줬고
눌렀을 때에는 getPermission 함수가 실행되도록 했다.